繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM