如何使用 Swarm 配置文件?

如何使用 Swarm 配置文件?

我想设置哪些配置文件用于 docker stack deploy。我的意思是,假设我的 docker-compose.yml 是这样的:

version: '3.8'

services:
  admin:
    image: "${ADMIN_IMAGE}"
    restart: always
    profiles:
      - "admin"
  api:
    image: "${API_IMAGE}"
    restart: always
    profiles:
      - "api"
  redis:
    image: "${REDIS_IMAGE}"
    restart: always
    profiles:
      - "redis"

并且只想部署管理和 Redis 服务。如果是 docker-compose,那么我有两个选择: docker compose --profile=admin --profile=redis up -d 或者 COMPOSE_PROFILES=admin,redis docker compose up -d 但我想将其部署为 swarm 堆栈,docker stack deploy --compose-file docker-compose.yml stack_name但我做不到。这两种选择在这种情况下都不起作用,尽管 docker 文档说 Swarm 支持它, 但不要说如何

我的问题是:

  • docker swarm 支持配置文件吗?
  • 如果支持,我如何使用它?
  • 否则,我该如何部署撰写文件的一部分?

答案1

看来 docker swarm 还不支持配置文件。docker stack config对带有配置文件的文件使用该命令docker-compose.yml会返回错误:

$ docker stack config -c docker-compose.yml 
services.my_service Additional property profiles is not allowed

目前,我想到唯一的解决方法是为每个配置文件创建不同的 docker-compose.yml 文件,并docker stack deploy仅在需要时将它们放入同一个堆栈中。

我知道这不是一个干净的解决方案,只是一种解决方法......

相关内容