如何为docker

时间:2019-04-29 05:28:04

标签: docker

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

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

我知道dockerfile指令'ENV'确实做到了这一点,我想知道是否有一种方法可以指向文件而不是将其写入Dockerfile中

2 个答案:

答案 0 :(得分:1)

在构建时,ENV变量不可用。您需要使用ARG变量。为此,您具有“ docker build”的“ --build-arg”标志。您不需要输入文件。

ENV变量由运行中的容器使用,并且可以使用“ docker run”的“ --env-file”标志作为文件注入。

希望这是您想要的,否则,请让我详细了解。

答案 1 :(得分:1)

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

如果有必要,您可能需要编写一个外壳包装程序,该包装程序将键值对文本文件作为输入来动态更改Dockerfile中的值,或者使其如下所示,但是要使用ENV @thaJeztah在link-

中建议,文件名必须包含在Dockerfile中
COPY my-env-vars /    
RUN export $(cat my-env-vars | xargs)

这是一个未解决的问题- https://github.com/moby/moby/issues/28617