如何解决使Docker Swarm使用Docker-Compose中的相同卷
我有一个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
卷?
任何帮助将不胜感激。预先感谢
解决方法
考虑使用external volumes
,正如Kiryl所指出的,答案是external volumes,但是有几个步骤要遵循我在下面列出的内容:
- 检查容器以获取它们正在使用的卷并获取其名称。 This answer指示如何执行此操作。
- 编辑
docker-compose.yml
文件以添加具有 existing *卷名称的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
部署堆栈
此外,在the same question in the official Docker Forum那里还有其他有用的解决方案和意见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。