gpt4 book ai didi

docker - 如何在docker-compose中定义多个参数略有不同的服务?

转载 作者:行者123 更新时间:2023-12-04 03:38:37 29 4
gpt4 key购买 nike

有没有办法在 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。
你可以安装 mustache

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"

您可以在 mustache on this link 上找到很好的教程这可以帮助您转换您当前的 docker-compose.yml到模板。

关于docker - 如何在docker-compose中定义多个参数略有不同的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66458049/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com