Mongodb docker中具有卷的Mongo db持久性

Mongodb docker中具有卷的Mongo db持久性,mongodb,docker,docker-compose,Mongodb,Docker,Docker Compose,我正在尝试创建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

我正在尝试创建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并将其执行到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。

我已在本地系统中复制了相同的问题并尝试解决它,我已根据中给出的文档将docker compose卷中的目标路径从“target:/data”修改为“target:/data/db”,并且有效。使用更新的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 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

您是否在docker compose之外创建了
mongodb_数据_卷
?如果外部标志设置为true,docs state docker compose不会尝试创建卷:是,卷是在之前创建的谢谢!我想如果我也需要配置,那么我应该添加一个映射到config文件夹的新卷。。。无论如何,好地方!我有一个问题:卷之间的最佳解决方案是什么:-类型:卷源:mongodb_data_volume target:/data/db-VS-volumes:-“local dir:docker dir”当我尝试此操作时,我得到
***fassert()失败后中止
以代码14退出。然而,在我的本地
/data
@r_zelazny中创建了一堆文件和一个
日志
目录。你忘了
/data
中的点了吗?或者该文件夹是否已存在用于其他目的?或者你正在使用Windows?我刚刚在Ubuntu18.04上尝试了这个
docker compose.yml
文件,它对我来说没有你描述的错误。编辑我的原始评论太晚了,但它在Windows 10 Pro上也对我有效。