我想设置哪些配置文件用于 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
仅在需要时将它们放入同一个堆栈中。
我知道这不是一个干净的解决方案,只是一种解决方法......