2016-07-06 69 views
2

我想要一種「開發泊塢窗鏡像」,其中npm install每次重新啓動我的Docker容器時都會執行(因爲我不想構建,推和拉每天從我的本地機器到Docker服務器的新開發鏡像)。 所以我想我可以做某事。像這樣在我的Dockerfile中:docker:npm安裝在docker start

CMD npm install git+ssh://[email protected]/my/project.git#develop && npm start 

不幸的是,這是行不通的。容器docker start後立即停止,我不知道爲什麼,因爲這個工程:

RUN npm install git+ssh://[email protected]/my/project.git#develop 
CMD npm start 

(只是用於測試,這當然不是我想有什麼)。但是,也許我對CMD有一些錯誤的認識,有人可以啓發我?

+2

你可以試試'CMD sh -c'npm install ... && npm start''嗎? – VonC

+0

你可以使用類似詹金斯的東西來自動完成建築,所以你所要做的就是推動。或者每次您希望更新時只運行docker exec npm update。 – Nauraushaun

回答

3

使您的CMD指向一個shell腳本。

CMD ["/my/path/to/entrypoint.sh"] 

與腳本之中:

#!/bin/bash 
npm install git+ssh://[email protected]/my/project.git#develop 
npm start 
# whatever else 

我覺得這是比較容易的幾個原因:

  1. 不可避免的這些命令與增加更多的正在做
  2. 這使得它交互式地運行容器更容易,你可以用docker run mycontainer /bin/bash運行它們,然後手動執行你的shell腳本。這對調試很有幫助