小编典典

在Dockerfile中获取环境变量值

docker

我正在为红宝石应用程序构建一个容器。我的应用程序的配置包含在环境变量中(通过dotenv加载到应用程序内部)。

这些配置变量之一是应用程序的公共ip,它在内部用于建立链接。我需要添加一个dnsmasq条目,将该ip指向容器内部的127.0.0.1,以便它可以获取应用程序的链接,就好像未对其进行容器化一样。

因此ENV,我试图在我的Dockerfile中设置一个将环境变量传递给容器的。

我尝试了几件事。

ENV REQUEST_DOMAIN $REQUEST_DOMAIN
ENV REQUEST_DOMAIN `REQUEST_DOMAIN`

一切都通过“ REQUEST_DOMAIN”字符串而不是环境变量的值。有没有一种方法可以将环境变量值从主机传递到容器?


阅读 2076

收藏
2020-06-17

共1个答案

小编典典

您应该在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

注意1: 如果您ARG在Dockerfile中引用了,但在中将其排除,则不会生成映像--build-arg

注2: 如果用户指定了未在Dockerfile中定义的构建参数,则该构建会输出警告:

[警告]没有使用一个或多个build-args [foo]。

2020-06-17