Docker环境variables来自文件

我正在尝试为我的生产和开发使用一个Dockerfile。 生产和开发之间的唯一区别是我设定的环境variables。 所以我想要从文件中导入环境variables。 在使用Docker之前,我只需要执行以下操作

. ./setvars ./main.py 

但是,如果更改与Docker等效的./main.py

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

那么variables将在主机上,不能从Docker实例访问。 当然,快速和肮脏的黑客将是一个文件

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

并在实例中运行。 然而,这真的很烦人,因为我想要运行很多脚本(使用相同的环境variables),然后必须为每个人创build一个额外的脚本。

是否有任何其他的解决scheme,以获得我的环境variables,而不使用不同的Dockerfile和我上面描述的方法在Docker中?

您最好的select是使用--env-file docker run命令的-e标志或--env-file

  • -e标志允许你指定envvariables的键/值对,
    例如:

     docker run -e ENVIRONMENT=PROD 

    您可以使用几次-e标志来定义多个env
    variables。 例如,dockerregistry本身可以使用-e flagsconfiguration,请参阅: https : //docs.docker.com/registry/deploying/#running-a-domain-registry

  • –env文件允许你指定一个文件。 但是文件的每一行必须是VAR = VALtypes的

完整的文档:

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