来自文件的Docker环境变量

时间:2016-05-13 10:45:49

标签: docker dockerfile

我正在尝试将一个Dockerfile用于我的生产和开发。生产和开发之间的唯一区别是我设置的环境变量。因此,我想从文件中导入环境变量。在使用Docker之前,我会简单地执行以下操作

. ./setvars
./main.py

但是,如果使用Docker等效项更改./main.py

. ./setvars
docker run .... ./main.py

然后变量将在主机上,无法从Docker实例访问。当然,快速而肮脏的黑客就是使用

制作文件
#!/bin/bash
. ./setvars
./main.py

并在实例中运行它。然而,这会非常烦人,因为我想要运行许多脚本(使用相同的环境变量),然后必须为每个人创建一个额外的脚本。

在没有使用不同的Dockerfile和我上面描述的方法的情况下,是否还有其他解决方案可以将我的环境变量放在docker中?

1 个答案:

答案 0 :(得分:13)

您最好的选择是使用-e标记或--env-file命令的docker run

  • -e标志允许您指定env变量的键/值对,
    例如:

    docker run -e ENVIRONMENT=PROD
    

    您可以多次使用-e标志来定义多个env
    变量。例如,docker注册表本身是可配置的 使用-e flags,请参阅: https://docs.docker.com/registry/deploying/#running-a-domain-registry

  • --env-file允许您指定文件。但是文件的每一行 必须是VAR = VAL
  • 类型

完整文档:

https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables-e-env-env-file