如何使用docker-compose存储MongoDB数据

Joe*_*Joe 7 mongodb docker docker-compose

我有这个docker-compose:

version: "2"
services:
  api:
    build: .
    ports:
      - "3007:3007"
    links:
      - mongo
  mongo:
    image: mongo
    volumes:
      - /data/mongodb/db:/data/db
    ports:
      - "27017:27017"
Run Code Online (Sandbox Code Playgroud)

/data/mongodb/db:/data/db是第一部分(/data/mongodb/db),数据存储在图像中,第二部分(/data/db)存储在本地?

它适用于生产(ubuntu),但当我在我的开发机器(mac)上运行时,我得到:

ERROR: for mongo  Cannot start service mongo: error while creating mount source path '/data/mongodb/db': mkdir /data/mongodb: permission denied
Run Code Online (Sandbox Code Playgroud)

即使我把它作为sudo运行.我/data在mac上的docker-program中的"文件共享"部分添加了目录.

在此输入图像描述

是否在生产和开发中使用相同的docker-compose?我该如何解决这个问题?

Was*_*hif 8

实际上它是另一种方式(主机:容器),/data/mongodb/db在你的主机上并且/data/db在容器中.

您已经/data在dev计算机的共享文件夹中添加了但尚未创建/data/mongodb/db,这就是您收到permission denied错误的原因.Docker无权创建文件夹.