我为docker-compose 3创建了一个使用许多环境变量的服务:
version: "3" services: myservice: build: context: ./myservice command: ./something environment: VAR1: "val1" VAR2: "val2" VAR3: "val3"
@H_301_8@现在我想添加一个使用相同环境变量值的服务,除了VAL1,并且具有不同的命令:
myotherservice: build: context: ./myservice command: ./somethingelse environment: VAR1: "val1-bis" VAR2: "val2" VAR3: "val3"
@H_301_8@有没有办法避免在docker-compose.yml文件中重复环境变量?在docker-compose 2中,可以使用
extends
关键字,但在docker-compose 3中不再是这种情况.编辑:2017年10月,扩展字段被添加到docker-compose 3.4语法:https://docs.docker.com/compose/compose-file/#extension-fields这是正确的方法:
version: "3" x-env: &default-env VAR1: "val1" VAR2: "val2" VAR3: "val3" services: myservice: build: context: ./myservice command: ./something environment: *default-env myotherservice: build: context: ./myservice command: ./somethingelse environment: << : *default-env VAR1: "val1-bis"
@H_301_8@
您可以将常见环境变量提取到env文件.
原文链接:https://www.f2er.com/docker/436719.html此后,您可以在撰写文件中使用env_file配置选项.
-> cat common.env VAR2=val2 VAR3=val3
@H_301_8@您仍然可以使用环境配置选项传递/覆盖除common.env中指定的环境变量之外的环境变量.
myotherservice: build: context: ./myservice command: ./somethingelse env_file: ./common.env environment: VAR1: "val1-bis"
@H_301_8@参考
> https://docs.docker.com/compose/environment-variables/#the-env-file