我正在为 ruby 应用程序构建一个容器。我的应用程序的配置包含在环境变量中(使用 dotenv 加载到应用程序中)。
这些配置变量之一是应用程序的公共 ip,它在内部用于建立链接。我需要添加一个 dnsmasq 条目,将这个 ip 指向容器内的 127.0.0.1,这样它就可以获取应用程序的链接,就好像它没有被容器化一样。
因此,我试图在我的 Dockerfile 中设置一个 ENV
,它将环境变量传递给容器。
我尝试了几件事。
ENV REQUEST_DOMAIN $REQUEST_DOMAIN
ENV REQUEST_DOMAIN `REQUEST_DOMAIN`
一切都传递“REQUEST_DOMAIN”字符串而不是环境变量的值。有没有办法将环境变量值从主机传递到容器?
原文由 Damien MATHIEU 发布,翻译遵循 CC BY-SA 4.0 许可协议
您应该在 Dockerfile 中使用
ARG
指令,该指令就是为此目的。所以你的 Dockerfile 会有这一行:
或者如果您更喜欢默认值:
现在您可以在 Dockerfile 中引用此变量:
然后你将像这样构建你的容器:
注意 1: 如果您在 Dockerfile 中引用了
ARG
但在--build-arg
中将其排除,则您的图像将不会构建。注意 2: 如果用户指定了未在 Dockerfile 中定义的构建参数,则构建会输出警告: