如何为 docker 的环境变量指定文件



我的代码中需要一些环境变量。

当我开始构建 docker 容器时,我希望将这些环境变量烘焙到我的 docker 容器中。

我知道 dockerfile 指令"ENV"正是这样做的,我想知道是否有办法指向文件而不是将其写入 Dockerfile

AFAIK,没有这样的方法可以在使用 Dockerfile 的构建步骤中使用文件注入环境变量。但是,在大多数情况下,人们最终会使用entrypoint脚本并在docker rundocker-compose up期间注入变量。

如果有必要,您可能需要编写一个 shell 包装器,它将通过将键值对文本文件作为输入来动态更改Dockerfile中的值,或者使其如下所示,但 ENV 文件名需要包含在 Dockerfile 中,如链接中的@thaJeztah建议 -

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"标志作为文件注入。

希望这就是您要找的,否则请更详细地告诉我。

最新更新