如何在Dockerfile中传递多个环境变量?

时间:2019-05-01 18:47:53

标签: docker docker-compose environment-variables dockerfile

我有一个docker-compose文件,该文件允许我将环境变量作为文件(.env文件)传递。由于我有多个ENV变量,Dockerfile中是否有像docker-compose中的env_file这样的选项,可以在Docker构建期间传递多个环境变量?

这是docker-compose.yml

services:
  web:
    image: "node"
    links:
        - "db"
    env_file: "env.app"

1 个答案:

答案 0 :(得分:0)

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

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

COPY my-env-vars /    
RUN export $(cat my-env-vars | xargs)

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

PS-使用此方法时,您需要格外小心,因为机密会被隐藏在图像本身中。