重复使用YAML部分
我正在整理一份docker撰写的文件。我想重复使用重复的部分。例如,每个容器重新使用相同的重复使用YAML部分,yaml,Yaml,我正在整理一份docker撰写的文件。我想重复使用重复的部分。例如,每个容器重新使用相同的deployconfig。我试着为它制作一个模板: ... redis: image: redis ports: - 6379:6379 deploy: deploy_template volumes: - /srv/redis/data:/data deploy_template: restart_policy: conditi
deploy
config。我试着为它制作一个模板:
...
redis:
image: redis
ports:
- 6379:6379
deploy: deploy_template
volumes:
- /srv/redis/data:/data
deploy_template:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 10
window: 120s
然而,这并没有起作用。有什么方法可以做到这一点吗?您可以使用YAML anchor和alias功能,有效地:
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
将进行分析,就像您指定了:
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
对于单个&deploy\u模板
锚点,可以有多个*deploy\u模板
值
然而,问题是虚拟
键及其值将触发docker compose
,至少在版本2中没有放置此信息的位置
因此,我使用(我是该软件包的作者)对我的docker compose
文件进行预处理,这允许用户数据
顶级键不会出现在输出中,并且您可以将这些锚定信息放在哪里。首先是:
version: '2'
user-data:
author: dthree <calvin@hobbes.org>
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
在交给docker之前,自行编写(使用-f
选项)。env defaults
“部分”中尚未在执行预处理器的环境中设置的任何变量都将被赋予其默认值,以便于覆盖它们
顺便说一句:你应该注意:
- 6379:6379
因为如果端口号小于60,docker compose使用的旧YAML解析器会将该标量解释为sexagesimal。我总是引用这样的值,尤其是在使用env时。变量
- 6379:6379