2015-12-04 14 views
1

使用docker-compose我有一個Dockerfile它爲Sails JS應用程序構建了一個環境。在我的Dockerfile中,我使用sails new .(通過docker-compose映射到本地文件系統的文件夾)生成了一個新的Sails腳手架項目。Dockerfile構建卷更改未反映在已裝載的本地文件夾上? (OS X/boot2Docker)

當我運行docker-compose build一切似乎都建立成功。我在本地機器上繼續執行docker-compose up -d。然後,我導航到主機上映射到本地的文件夾,在主機(vm)上生成新Sails項目的文件夾。我在期待看到在本地文件夾中的docker-compose build期間在主機上生成的所有文件。該文件夾是BLANK雖然?這是怎麼回事?

我的基本泊塢窗,撰寫文件:

node: 
    restart: "always" 
    build: ./cnt/node 
    ports: 
    - "8080:8080" 
    volumes: 
    - ./src:/var/www/html 
    # DEBUG: conveniently used to keep a container running 
    command: /bin/bash -c 'tail -f /dev/null' 

注: ./src是我的本地文件夾我的源代碼將駐留。這被映射到HOST機器上的/ var/www/html(webroot)。

下面是從Dockerfile的最後幾行中用來產生帆支架./cnt/node發現:

WORKDIR /var/www/html 
RUN sails new . 
RUN touch test.txt 

一切運行成功,當我執行(沒有錯誤):

docker-compose build 
docker-compose up -d 

完成後我cd src檢查,我希望看到我的帆應用支架的源目錄,但它是EMPT Y。有沒有搞錯?!沒有錯誤?我錯過了什麼?

有什麼事情做的泊塢窗,撰寫文件和我buidling的圖像通過build: ./cnt/node建成後,我安裝在撰寫文件的卷?在生成Sails腳手架之前,是否需要首先安裝VOLUMES 第一個

謝謝!

+0

哪裏是你的src文件夾中生成主機上的腳手架?只有/ Users/...在您的主機和VM之間共享:http://stackoverflow.com/a/33998695/6309 – VonC

+0

@VonC yes。意識到/ Users文件夾限制,我的src文件夾位於/ Users –

回答

2

卷僅在運行時掛載,build專門設計爲可重複使用,因此在構建過程中不允許任何外部操作。

你必須使用docker-compose run node ...

+0

的子文件夾中正確答案!不幸的是'docker-compose run node ...'會生成一個新的圖像層,這是我在生成腳手架時要避免的。通過創建啓動腳本(startup-check.sh)並將其添加到docker-compose中的命令選項解決了我的問題:'command:/ bin/bash -c'/startup-check.sh&& [your_standard_container_command]'' –

+0

'docker-compose run node'不會創建一個新的圖像層,但它確實會創建一個新的容器。您可以使用'docker-compose run --rm node'在完成後立即移除容器,如果這是一個問題。創建新的容器非常輕便,所以它可能不需要擔心。入口點腳本(如您所述)是另一種常見選項。 – dnephin

相關問題