2017-06-22 26 views
4

我有這個搬運工-撰寫:如何存儲的MongoDB數據與搬運工-構成

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的),但是當我在我的dev的機器(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的「文件共享」部分中添加了/data目錄。

enter image description here

就是用在生產和發展同泊塢窗,構成了主意?我該如何解決這個問題?

回答

5

其實這是相反的方式(主機:容器),/data/mongodb/db在您的主機上,/data/db在容器中。

您已在您的開發機器的共享文件夾中添加/data,但尚未創建/data/mongodb/db,這就是爲什麼您會收到permission denied錯誤。 Docker沒有創建文件夾的權限。

1

我得到的印象你需要更多地瞭解Docker的基本知識,以充分理解你在做什麼。在生產中運行Docker有很多潛在的缺陷,我的建議是非常好地學習基本知識,以便您知道如何處理它們。

這裏的文件說,怎麼樣volumes

[...]指定主機上的路徑(主持人:CONTAINER)

所以你有它周圍的錯誤的方式。第一部分是主持人的過去,例如您的本地機器,第二個是容器內容量的安裝位置。

您看到的錯誤是由於您的本地計算機上沒有/data/mongodb這一事實造成的,並且由於權限而創建該路徑失敗。爲防止出現這種情況,請使用用戶家中的某個位置,即~/下的某個位置。

關於你最後的問題,看看這篇文章:Using Compose in production