MrF*_*fer 6 docker 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: ...
Run Code Online (Sandbox Code Playgroud)
这段代码当然不起作用,但我相信功能很清楚。
中没有这样的功能docker-compose。您最多可以将环境变量与值结合使用。
话虽如此,您可以使用 cli 模板引擎并mustache-cli使用它来生成 docker-compose.yml。
你可以安装小胡子
sudo gem install mustache
Run Code Online (Sandbox Code Playgroud)
安装后,您需要创建模板文件docker-compose.mustache和参数文件parameters.yml,并将它们组合到最终文件中,如下例所示:
参数.yml
ports:
- 10
- 20
- 30
Run Code Online (Sandbox Code Playgroud)
docker-compose.mustache
version: "3.9"
services:
{{#ports}}
web{{.}}:
build: .
ports:
- "50{{.}}:5000"
redis:
image: "redis:alpine"
{{/ports}}
Run Code Online (Sandbox Code Playgroud)
然后将它们结合起来
~# 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"
Run Code Online (Sandbox Code Playgroud)
您可以在此链接上找到有关胡子的良好教程,它可以帮助您将当前内容转换docker-compose.yml为模板。
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |