在Dockerfile FROM参数中使用–build-arg值

我目前使用AWS ECR托pipe我的项目图像,我需要参数FROM在Dockerfile中是根据命令行发送的–build-argdynamic的。 例:

$ docker build --build-args region=us-east-1 . // Dockerfile FROM aws.ecr.huge.url.${region}/repo:php-apache WORKDIR /var/www RUN echo "@@@" 

$ {region}永远不会被replace,我得到一个错误,说图像不存在。

如果我运行echo $ {region}它有效,问题似乎与FROM指令。

有什么办法可以实现吗?

这是不支持,因为你已经发现,并在variables扩展限制中logging :

Dockerfile中的以下指令列表支持环境variables:

  • 复制
  • ENV
  • 暴露
  • 标签
  • 用户
  • WORKDIR
  • STOPSIGNAL

以及:

  • ONBUILD(当与上面支持的指令之一结合使用时)

为了解决这个问题,我怀疑你需要先用外部进程生成你的Dockerfile,比如用sed "s/__region__/$region/" <Dockerfile.in >Dockerfile命令。

您的Dockerfile中缺lessARG。 请试试这个。

 $ docker build --build-args region=us-east-1 . // Dockerfile ARG region FROM aws.ecr.huge.url.${region}/repo:php-apache WORKDIR /var/www