在docker-compose.yml文件中获取或设置envvariables
我有一个docker-compose.yml
文件,在那里我定义:
extra_hosts: - "localhost:${MY_MACHINE_IP}"
如果我之前将MY_MACHINE_IP定义为环境variables,它将起作用。
我想实现的是执行如下操作:
extra_hosts: - "localhost:<get MY_MACHINE_IP from env if it exists, if not set MY_MACHINE_IP env variable with value <docker-machine-ip>>"
换句话说:我想在extra_hosts部分定义它,如果MY_MACHINE_IP已经被指定,那么得到它,如果没有 – 设置这个env。 variables与值=我的docker机器ip。
可能吗?
是根据docker文件
docker-compose run SERVICE env
所以我认为这些变数不像你想的那样是全球性的。 你必须将它们作为parameter passing。 阅读这个 。
你可以使用包ruamel.dcw
(Docker Compose Wrapper的dcw
,声明:我是该包的作者)。 它允许您在docker-compose.yaml
文件中创build一个包含关键user-data
的部分,该文件在将文件交给普通的docker-compose
之前被剥离出来。 该部分可能看起来像:
user-data: author: Your Name <your-name@youremail.com> description: container for postfix/submission env-defaults: PORT: 587 # override during development NAME: submission DOCKER_BASE: /data0/DATA
然后您可以在文件的其余部分使用{PORT}
, {NAME}
和{DOCKER_BASE}
,并可以使用环境variables覆盖这些默认值。
该实用程序还写出一个文件.dcw_env_vars.inc
,您可以将其复制到您的容器和源中,以获取适当的值到您在Dockerfile
RUN
脚本中
- 如何确认发送到docker run命令的环境variables是否被接收?
- 将envvariables传递给DOCKER Spring Boot
- PHP-docker容器中的环境variables
- Docker环境variables和Django数据库设置
- 泊坞窗。 将dynamic主机ip添加到容器的env var
- 在Docker容器中不能更改环境variables
- Docker撰写开发和生产环境最佳工作stream程
- ECS Docker Container获取运行cron的envvariables
- 使用sudo运行docker-compose时,在docker-compose.yml文件中进行variablesreplace