mongodb - 带有卷的 docker 中的 Mongo 数据库持久性

标签 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:
  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/

相关文章:

javascript - 已定义变量未定义

docker - 关于在Kubernetes中将Pod部署到Master

amazon-web-services - AWS ECS 容器日志设计模式

node.js - Docker 撰写 : Accessing my webapp from the browser

node.js - 使用 Redis 和 MongoDB (HyperLogLog) 计算唯一值

MongoDB 分组依据

php - Docker Compose 与 PHP、MySQL、nginx 连接问题

macos - Mac上的Docker Compose-镜像位置

mongodb - 如何: $merge and On-Demand-Materialized views

windows - 无法将Fabric8与Docker一起用于Windows