2016-11-23 68 views
1

我對Docker和Containers完全陌生。我也是整個虛擬機概念的新手。如何更改Docker容器內的代碼?

我知道VM和Dockers是一種使應用程序的所有依賴項作爲單一組件提供的方式,您可以在支持它們的雲上輕鬆部署該組件。

我在我的本地機器上安裝了Docker(Ubuntu),我使用used this guide下載並運行Node官方映像。

我現在需要知道的是如何對Docker中的文件進行代碼更改?我對應用內的'server.js'進行了更改,當我導航到http://locahost:49160時,瀏覽器仍顯示舊的server.js的輸出。我重新啓動容器,但我得到相同的舊輸出。

我看到我可以提交更改並製作新圖片。但那麼,不是舊的圖像完全無用嗎?

還是我根本不知道瞭解Docker的工作原理?

+0

我沒有使用docker,但是當我在容器中進行更改時,它們仍然存在。 –

+0

哦..是否再次啓動nodejs服務器時出現問題?因爲我嘗試過,而且失敗了。 –

回答

3

您可以在容器內進行更改,甚至可以將這些更改提交到原始圖像或創建新圖像。

但我建議您創建一個新的圖像或標籤。

查看guide。當您想對server.js進行更改時,請執行此操作,但還要爲其創建新映像。不要忘記添加標籤(test1)。

例,docker build -t <your username>/node-web-app:test1 .

然後你可以運行與docker run -p 49160:8080 -d <your username>/node-web-app:test1

+0

好的,我會測試這個並讓你知道。 –

+0

建立新的圖像作品。應該多久構建一次圖像? –

+1

每次你在你的代碼中進行編輯並且想部署它。 – lvthillo

2

的新形象在你的情況。你可能需要重建你的形象:

docker build -t my-new-image . 

您做出了修改您的server.js這是你的圖像/容器內複製。舊圖像確實無用。構建完成後,您需要使用docker run開始一個新的容器。

在某些情況下,它可能對你的代碼/數據與docker run -v my-local-volume:/volume-in container ...

安裝到您的碼頭工人集裝箱當你要修改您的密碼在本地計算機將您的容器內自動更新。不更新圖像或重新啓動容器。但在你的情況下,你需要使用dockerfile的COPY命令複製應用程序中的代碼。

+0

有沒有辦法不經常手動每次都複製代碼? –

+0

我不知道nodejs很好。但我認爲'問題'是npm安裝是在圖像內完成的(這可能取決於你的package.json - > server.js)。因此,如果可能的解決方案是創建一個startup.sh腳本,它將在容器啓動時執行npm install + npm start(docker run with mount your code),而不是在映像內部執行此操作。 – lvthillo

+0

好的。我會測試並讓你知道。 –

相關問題