【发布时间】:2019-04-29 05:28:04
【问题描述】:
我的代码中有一些我需要的环境变量。
当我开始构建 docker 容器时,我希望将这些环境变量烘焙到我的 docker 容器中。
我知道 dockerfile 指令 'ENV' 正是这样做的,我想知道是否有一种方法可以指向一个文件而不是将其写入 Dockerfile 中
【问题讨论】:
标签: docker
我的代码中有一些我需要的环境变量。
当我开始构建 docker 容器时,我希望将这些环境变量烘焙到我的 docker 容器中。
我知道 dockerfile 指令 'ENV' 正是这样做的,我想知道是否有一种方法可以指向一个文件而不是将其写入 Dockerfile 中
【问题讨论】:
标签: docker
AFAIK,没有这种方法可以在使用 Dockerfile 的构建步骤中使用文件注入环境变量。然而,在大多数情况下,人们最终会使用entrypoint 脚本并在docker run 或docker-compose up 期间注入变量。
如果有必要,您可能需要编写一个 shell 包装器,该包装器将通过将键值对文本文件作为输入来动态更改 Dockerfile 中的值,或者将其设置为如下所示但 ENV 文件名需要按照@thaJeztah 在link 中的建议包含在Dockerfile 中 -
COPY my-env-vars /
RUN export $(cat my-env-vars | xargs)
这是一个悬而未决的问题 - https://github.com/moby/moby/issues/28617
【讨论】:
在构建时,ENV 变量不可用。您需要使用 ARG 变量。为此,您拥有“docker build”的“--build-arg”标志。它不接受你的文件。
ENV 变量由正在运行的容器使用,可以使用“docker run”的“--env-file”标志作为文件注入。
希望这就是您要找的,否则请告诉我更多详细信息。
【讨论】: