我正在尝试创建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
我试图只停止容器而不是停下来,然后数据仍然存在……这表明我仍在使用内部存储。如果是这种情况,如何使用外部卷?
我正在使用Mac和docker版本18.06.1-ce-mac73。
答案 0 :(得分:6)
我已在本地系统中复制了相同的问题,并尝试解决该问题,根据文档,我已将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
经过测试,可以正常工作!
答案 1 :(得分:-2)
我创建了一个mongodb容器,并使用下面的docker-compose.yml
文件精简了基础,以实现持久存储。
我正在使用正式的mongo映像版本,并将存储在/data/db
下的容器中的数据库数据映射到本地文件夹/data
,如下所示:
version: "3.2"
services:
mongodb:
image: mongo:4.2.2-bionic
container_name: mongodb
restart: unless-stopped
ports:
- 27017-27019:27017-27019
volumes:
- ./data:/data/db