gpt4 book ai didi

amazon-web-services - 在 Dockerfile FROM 参数中使用 --build-arg 值

转载 作者:行者123 更新时间:2023-12-01 13:36:53 25 4
gpt4 key购买 nike

我目前正在使用 AWS ECR 来托管我的项目镜像,并且我需要参数 FROM 根据从命令行发送的 --build-arg 在 Dockerfile 中是动态的。例子:

$ docker build --build-args region=us-east-1 .

// Dockerfile
FROM aws.ecr.huge.url.${region}/repo:php-apache
WORKDIR /var/www
RUN echo "@@@"

${region} 永远不会被替换,并且我收到一条错误消息,指出该图像不存在。

如果我运行 echo ${region} 它可以工作,问题似乎出在 FROM 指令上。

有什么方法可以实现吗?

最佳答案

更新答案:

随着multi-stage builds的介绍, docker 添加了提供 ARG 的能力之前FROM线。这将如下所示:

# default to us-east-1
ARG region=us-east-1
FROM aws.ecr.huge.url.${region}/repo:php-apache

请注意 ARG 's are namespaced .在 FROM 之前定义时线,它们可用于 FROM线。在一个阶段内,它们在该阶段结束之前都可用。如果您需要使用 ARG在多个命名空间中,您可以多次定义它。

引入多阶段构建之前的原始答案:

正如您所发现的,这不受支持,因为 documented in the variable expansion limitations :

Environment variables are supported by the following list of instructions in the Dockerfile:

  • ADD
  • COPY
  • ENV
  • EXPOSE
  • LABEL
  • USER
  • WORKDIR
  • VOLUME
  • STOPSIGNAL

as well as:

  • ONBUILD (when combined with one of the supported instructions above)


要解决此问题,我怀疑您首先需要使用外部进程生成 Dockerfile,例如与 sed "s/__region__/$region/" <Dockerfile.in >Dockerfile命令。

关于amazon-web-services - 在 Dockerfile FROM 参数中使用 --build-arg 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39048605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com