我正在尝试创建一个 mongo 数据库容器,但无法使数据持久化。 这是我的 docker-compose.yml
version: "3.2"
services:
mongodb:
image: mongo:2.4
command: --smallfiles
ports:
- 27017:27017
volumes:
- type: volume
source: mongodb_data_volume
target: /data
volumes:
mongodb_data_volume:
external: true
在 docker-compose 和 exec -it 进入 mongodb 之后,我创建了一个新的空数据库,然后我列出了挂载卷的内容:
root@cf8330019f91:/data/db# ls
_tmp admin.1 journal local.ns
admin.0 admin.ns local.0 mongod.lock
但随后我进行了向下和向上循环,并将相同的安装卷重置为初始值。
root@d18bda47d0b3:/data/db# ls
_tmp journal local.0 local.ns mongod.lock
我试图只停止容器而不是 compose down,然后数据仍然存在......这表明我仍在使用内部存储。如果是这种情况,如何让它使用外部卷?
我使用的是 mac 和 docker 版本 18.06.1-ce-mac73。
最佳答案
我已经在我的本地系统中复制了同样的问题并尝试解决它,我已经根据文档将 docker-compose 卷中的目标路径从“target:/data”修改为“target:/data/db”在 https://hub.docker.com/_/mongo/ 中给出它有效。使用更新的 docker-compose 文件,如下所示
version: "3.2"
services:
mongodb:
image: mongo:2.4
command: --smallfiles
ports:
- 27017:27017
volumes:
- type: volume
source: mongodb_data_volume
target: /data/db
volumes:
mongodb_data_volume:
external: true
已测试并有效!!!
关于mongodb - 带有卷的 docker 中的 Mongo 数据库持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302770/