我有一个包含一些服务的
docker-compose.yml
文件:
version: '3'
services:
# PostgreSQL
db:
image: postgres:12
volumes:
- postgres_data:/var/lib/postgresql/data/
# MongoDB Server
mongo:
image: mongo:4.2
volumes:
- mongo_data:/data/db
- mongo_data:/data/configdb
volumes:
mongo_data:
mongo_config:
postgres_data:
我一直在生产中工作,通过
docker-compose up -d
启动服务。但现在我想使用 docker stack deploy --compose-file docker-compose.yml mystack
来实现未来的可扩展性。
问题是服务现在使用新卷。所以我不能使用所有的数据库数据。我怎样才能让 Swarm 使用现有的
docker-compose
卷?
任何形式的帮助将不胜感激。预先感谢
正如 Kiryl 指出的,答案是外部卷,但有几个步骤需要遵循,我在下面列出:
docker-compose.yml
文件以添加 external
键以及 现有 卷的名称。结果如下:volumes:
mongo_data:
external:
name: existing name...
mongo_config:
external:
name: existing name...
postgres_data:
external:
name: existing name...
docker-compose up -d
开始检查所有卷是否正常。然后按 docker-compose down
docker stack deploy --compose-file docker-compose.yml mystack
另外,在Docker官方论坛中也有同样的问题,那里还有其他有价值的解决方案和意见。
考虑使用外部卷