从文件中读取Docker环境变量

12

我希望使用一个Dockerfile既用于生产环境又用于开发环境。唯一的区别在于我设置的环境变量。因此我想从文件中导入环境变量。在使用Docker之前,我只需执行以下操作:

. ./setvars
./main.py

然而,如果将./main.py替换为Docker等效物

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

如果这样做,变量将在主机上而无法从Docker实例中访问。当然,一个快速且简单的解决方法是创建一个文件,其中包含

#!/bin/bash
. ./setvars
./main.py

那么在实例中运行。但这将非常烦人,因为我有很多脚本想要运行(具有相同的环境变量),然后将不得不为每个脚本创建一个额外的脚本。

是否有其他解决方案可以在docker中获取我的环境变量而不使用不同的Dockerfile和上述方法?

1个回答

17

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

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

docker run -e ENVIRONMENT=PROD

您可以使用-e标志多次定义多个环境变量。例如,Docker注册表本身可通过-e标志进行配置,请参见: 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


    2
    太好了!--env-file非常完美,我的设置文件只需要进行最小的更改。谢谢! - Smarties89

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接