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

我有这个docker组成:

version: "2" services: api: build: . ports: - "3007:3007" links: - mongo mongo: image: mongo volumes: - /data/mongodb/db:/data/db ports: - "27017:27017" 

/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 

即使我把它作为sudo运行。 我已经在mac上的docker-program中的“File Sharing”部分添加了/data目录。

在这里输入图像说明

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

实际上是这样(HOST:CONTAINER), /data/mongodb/db在主机上, /data/db在容器中。

你已经在你的开发机器的共享文件夹中添加了/data ,但是你还没有创build/data/mongodb/db ,这就是为什么你得到一个permission denied错误。 Docker没有创build文件夹的权限。

我得到的印象是你需要更多地了解Docker的基本知识,以充分理解你在做什么。 在生产中运行Docker有很多潜在的缺陷,我的build议是非常好的学习基础知识,所以你知道如何处理它们。

以下是文档中关于卷的说明 :

在主机上指定一个path(HOST:CONTAINER)

所以你有错误的方式。 第一部分是主机上的过去,例如您的本地机器,第二部分是容器内容的安装位置。

您看到的错误是由于您的本地计算机上没有/data/mongodb ,并且由于权限而创build该path失败。 为了防止这种情况,请在用户家中使用一个位置,即~/下的某个位置。

关于你最后的问题,看看这篇文章: 在生产中使用Compose 。