[英]How to define multiple services with slightly different parameters in docker-compose?
有没有办法在docker-compose.yml
文件中创建变量列表并基于模板为每个变量创建服务?
例如PARAMS=[name_a, name_b, name_c]
创建 3 个服务:
FOR param IN PARAMS:
my-service-{param}:
build: my-image
container_name: my-container-{param}
environment:
NAME: {param}
SOME_OTHER: ...
这段代码当然不起作用,但我相信它的功能很清楚。
docker-compose
中没有这样的功能。 您可以做的最大工作是将环境变量与值结合使用。
话虽如此,您可以使用 cli 模板引擎作为mustache-cli
并使用它来生成 docker-compose.yml。
你可以安装胡子
sudo gem install mustache
安装后,您需要创建一个模板文件docker-compose.mustache
和参数文件parameters.yml
并将它们组合到最终文件中,如下例所示:
参数.yml
ports:
- 10
- 20
- 30
docker-compose.mustache
version: "3.9"
services:
{{#ports}}
web{{.}}:
build: .
ports:
- "50{{.}}:5000"
redis:
image: "redis:alpine"
{{/ports}}
之后将它们组合起来
~# mustache parameters.yml docker-compose.mustache
version: "3.9"
services:
web10:
build: .
ports:
- "5010:5000"
redis:
image: "redis:alpine"
web20:
build: .
ports:
- "5020:5000"
redis:
image: "redis:alpine"
web30:
build: .
ports:
- "5030:5000"
redis:
image: "redis:alpine"
您可以在此链接上找到关于胡子的好教程,它可以帮助您将当前的docker-compose.yml
转换为模板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.