在Dockerfile中获取环境变量值
我正在为红宝石应用程序构建一个容器。我的应用程序的配置包含在环境变量中(通过dotenv加载到应用程序内部)。
这些配置变量之一是应用程序的公共ip,它在内部用于建立链接。我需要添加一个dnsmasq条目,将该ip指向容器内部的127.0.0.1,以便它可以获取应用程序的链接,就好像未对其进行容器化一样。
因此ENV
,我试图在我的Dockerfile中设置一个将环境变量传递给容器的。
我尝试了几件事。
ENV REQUEST_DOMAIN $REQUEST_DOMAINENV REQUEST_DOMAIN `REQUEST_DOMAIN`
一切都通过“ REQUEST_DOMAIN”字符串而不是环境变量的值。有没有一种方法可以将环境变量值从主机传递到容器?
回答:
您应该在Dockerfile中使用此目的的ARG
指令。
该
ARG
指令定义了一个变量,用户可以在构建时使用docker build命令使用该变量将--build-arg
<varname>=<value>标志传递给构建器。
因此,您的 Dockerfile 将具有以下行:
ARG request_domain
或者,如果您希望使用默认值:
ARG request_domain=127.0.0.1
现在,您可以在Dockerfile中引用此变量:
ENV request_domain=$request_domain
那么您将像这样构建容器:
$ docker build --build-arg request_domain=mydomain Dockerfile
如果您ARG
在Dockerfile中引用了,但在中将其排除,则不会生成映像--build-arg
。
如果用户指定了未在Dockerfile中定义的构建参数,则该构建会输出警告:
[警告]没有使用一个或多个build-args [foo]。
以上是 在Dockerfile中获取环境变量值 的全部内容, 来源链接: utcz.com/qa/435132.html