2015-09-20 119 views
6

在Docker容器中運行的代碼的正確開發流程是什麼?Docker開發工作流程

Solomon Hykes said「官方」工作流程涉及爲每個Git提交構建並運行新的Docker鏡像。這是有道理的,但如果我想在將它提交給Git repo之前測試一個更改,該怎麼辦?

我能想到的兩種方法可以做到這一點:

  1. 本地開發服務器(例如,Django開發服務器)上運行的代碼。編輯文件;在dev服務器上測試;做一個Git提交;用新代碼重建Docker鏡像;在本地Docker容器上再次測試。

  2. 不要運行本地開發服務器。相反,每次編輯文件時都要構建並運行一個新的Docker鏡像,然後在本地Docker容器上測試更改。

這兩種方法都非常低效。有沒有更好的辦法?

回答

3

一個更有效的方法是從最新的圖像(它有最新的代碼)中運行一個新的容器。

你可以啓動該容器啓動一個bash shell的,這樣你就可以從容器內部編輯文件:

docker run -it <some image> bash -l 

你會然後運行該容器中的應用程序來測試新的代碼。

更改該容器中文件的另一種方法是使用卷啓動它。我們的想法是在泊塢窗主機,而不是從容器本身的文件搞亂在命令行上的目錄來修改文件:

docker run -it -v /home/joe/tmp:/data <some image> 

,你將放在/home/joe/tmp您搬運工主機上的任何文件將根據可用/data/在容器中。將/data更改爲適用於您的案例的任何路徑並將其破解。

+0

謝謝! '-v'看起來不錯。但是'/ home/joe/tmp'中的變化準備好後會發生什麼?有沒有一種優雅的方式將代碼複製到Docker鏡像,以便我可以重建和部署它? –

+0

然後提交併重建圖像。您還應該考慮使用Jenkins爲您構建這些圖像 – Thomasleveil

+0

但是,如果代碼位於本地開發機器上,那麼如何「提交」它以便將其包含在Docker映像中? –