您可以使用YAML锚和别名设施为,有效:
version: '2'
dummy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
services:
redis:
image: redis
ports:
- 6379:6379
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
volumes:
- /srv/redis/data:/data
你可以有multipe *deploy_template
值单:就好像你指定
version: '2'
dummy: &deploy_template
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
services:
redis:
image: redis
ports:
- 6379:6379
deploy: *deploy_template
volumes:
- /srv/redis/data:/data
将被解析&deploy_template
主播。
然而,问题是dummy
键和它的值将跳脱docker-compose
,并且至少在版本2中没有放置这些信息的地方。
我因此我进行预处理文件docker-compose
使用ruamel.dcw
(我那个包的作者),它允许将不会出现在输出,你可以把上述的锚信息user-data
顶级项。与开始:
version: '2'
user-data:
author: dthree <[email protected]>
description: redis container
env-defaults:
NAME: redis # default values if not specified in the environment
PORT: 6379
dummy:
- &deploy_template
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
- &some_other_template:
x: null
services:
redis:
image: ${NAME}
ports:
- "${PORT}:${PORT}"
deploy: *deploy_template
volumes:
- /srv/${NAME}/data:/data
这将扩大到:
version: '2'
services:
redis:
image: ${NAME}
ports:
- ${PORT}:${PORT}
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
volumes:
- /srv/${NAME}/data:/data
是交给docker-compose
本身(使用-f
选项)前。 env-defaults
“部分”中任何尚未在您执行预处理器的环境中设置的变量都将被赋予它们的默认值,从而轻松覆盖它们。
顺便说一句:你应该小心:
- 6379:6379
,因为如果端口号得低于60,老YAML解析器泊坞窗,构成用途,解释说标量和60进制。我倾向于总是引用这些值,特别是在使用env时。变量。