我的代码中有一些环境变量。
当我开始构建Docker容器时,我希望将这些环境变量烘焙到我的Docker容器中。
我知道dockerfile指令'ENV'确实做到了这一点,我想知道是否有一种方法可以指向文件而不是将其写入Dockerfile中
答案 0 :(得分:1)
在构建时,ENV变量不可用。您需要使用ARG变量。为此,您具有“ docker build”的“ --build-arg”标志。您不需要输入文件。
ENV变量由运行中的容器使用,并且可以使用“ docker run”的“ --env-file”标志作为文件注入。
希望这是您想要的,否则,请让我详细了解。
答案 1 :(得分:1)
AFAIK,没有任何一种方法可以在使用Dockerfile的构建步骤中使用文件来注入环境变量。但是,在大多数情况下,人们最终会使用entrypoint
脚本并在docker run
或docker-compose up
期间注入变量。
如果有必要,您可能需要编写一个外壳包装程序,该包装程序将键值对文本文件作为输入来动态更改Dockerfile
中的值,或者使其如下所示,但是要使用ENV @thaJeztah在link-
COPY my-env-vars /
RUN export $(cat my-env-vars | xargs)
这是一个未解决的问题- https://github.com/moby/moby/issues/28617