我正在尝试将一个Dockerfile用于我的生产和开发。生产和开发之间的唯一区别是我设置的环境变量。因此,我想从文件中导入环境变量。在使用Docker之前,我会简单地执行以下操作
. ./setvars
./main.py
但是,如果使用Docker等效项更改./main.py
. ./setvars
docker run .... ./main.py
然后变量将在主机上,无法从Docker实例访问。当然,快速而肮脏的黑客就是使用
制作文件#!/bin/bash
. ./setvars
./main.py
并在实例中运行它。然而,这会非常烦人,因为我想要运行许多脚本(使用相同的环境变量),然后必须为每个人创建一个额外的脚本。
在没有使用不同的Dockerfile和我上面描述的方法的情况下,是否还有其他解决方案可以将我的环境变量放在docker中?
答案 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
完整文档:
https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables-e-env-env-file