【问题标题】:Docker compose mirroring folderDocker 撰写镜像文件夹
【发布时间】:2020-09-29 18:42:14
【问题描述】:

我正在尝试创建一个在 docker 容器中运行的 mongodb 服务。我的目的是将容器内的所有数据保存在主机中。为此,我有一个docker-compose.yml 文件,其内容是:

version: '3.2'

services:
  mongodb:
    image: mongo:latest
    environment:
      MONGO_INITDB_ROOT_USERNAME: myrootmongousername
      MONGO_INITDB_ROOT_PASSWORD: myrootmongopassword
      MONGO_INITDB_DATABASE: dbnameiwanttocreate
    ports:
      - '27010:27017'
    volumes:
      - 'mongodata:/data'

如您所见,我的volumes 部分声明将容器内/data 文件夹的所有内容放入主机中的mongodata 文件夹中。我创建了一个名为 mongodata 的文件夹,与我的 docker-compose.yml 文件高度相同。

myprojectfolder
|__docker-compose.yml
|__mongodata

当我执行docker-compose up 时,它会创建一个容器,我可以连接等等。但是,我的mongodata 文件夹完全是空的。这是不可能的,因为如果我进入 docker 容器 (docker exec -it <container-id> bash) 并探索 /data 文件夹,它根本不是空的。

我的错误是什么?

谢谢!

【问题讨论】:

  • 您需要使用主机文件夹的绝对路径/users/xxxx/mongodata:/data 而不是mongodata:/data。在您当前的配置中,您使用的是 docker 管理的命名卷。见docker-compose volume document
  • ...或相对路径./mongodata。
  • 谢谢戴,大卫迷宫。我两个都试过了。不工作,仍然是空文件夹。
  • @Carlos 你有解决办法吗?我有同样的问题,无法解决。如果您能与我们分享解决方案,我将不胜感激。提前致谢!

标签: mongodb docker docker-compose docker-volume


【解决方案1】:

以下 Docker compose 文件适用于 ubuntu 18.04 上的以下目录结构,检查 docker 是否有权写入本地文件夹mongodata

如果这不起作用,通过运行 docker-compose logs 粘贴日志将更新针对该问题的答案。

version: '3.2'

services:
  mongodb:
    image: mongo:latest
    environment:
      MONGO_INITDB_ROOT_USERNAME: myrootmongousername
      MONGO_INITDB_ROOT_PASSWORD: myrootmongopassword
      MONGO_INITDB_DATABASE: dbnameiwanttocreate
    ports:
      - '27010:27017'
    volumes:
      - './mongodata:/data'
├── docker-compose.yml
└── mongodata
    ├── configdb
    └── db

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2020-12-02
    相关资源
    最近更新 更多