2015-10-05 108 views
1

我想將部署投入生產是最容易的,但是如何去實現這一點,正在苦苦掙扎。在Docker中包裝應用程序可部署鏡像

如果我將docker用於生產,將docker映像與我的應用程序deployable配合使用會很好,但我不確定這是否是一種好方法。

我有幾個擔心:

  1. 不會層系統膨脹,當我將取代在圖像的新版本,每一次文件?
  2. 讓DB腳本和遷移工具成爲這個鏡像的一部分是個好主意嗎?
  3. 最後一個問題是如何方便地運行它。我不想去那裏停止tomcat容器,並使用新應用程序映像中的卷重新啓動它(因爲新的應用程序容器名稱不能相同)。

我見過的方式來做到這一點,但我不喜歡他們很即部署到Tomcat碼頭工人的形象,創建應用程序的Tomcat圖像已經捆綁或使用主機系統卷。我喜歡安裝「CD」。我想用其他方法評估我的想法,談論運行它的適當工具可能是其他問題。

回答

1

不會使圖層系統膨脹,當我將每次在新版本的圖像中替換文件?

沒有因爲你可以clean up dangling images

docker rmi $(docker images --filter "dangling=true" -q --no-trunc) 

是好主意,使這一形象的DB腳本和遷移工具的一部分?

是的,如果你的啓動腳本知道檢測是否需要應用它們。

我不太喜歡它們,即部署到Tomcat泊塢窗圖像,創建Tomcat圖像與應用程序已捆綁或使用主機系統卷。

如果您的數據容器與應用程序是分開的,那應該不是問題。

the discussion,在OP補充說:使用

docker create --name <container_name> <image_name>不同的圖像名稱可以保留容器的名字,我可以運行在相同的卷,從Tomcat容器?

docker run -it --rm -p 8888:8080 --volumes-from <container_name> <image_name> 

這是想法,但如果已經有一個同名的創建數據容器,它不會工作。

如果其中沒有持久數據,則可以將該數據容器託管到該數據容器中,然後用相同的名稱重新創建它。

如果存在持久數據,則最好通過中間(docker run)容器複製新的更新數據,該容器將臨時安裝數據容器。

+0

對不起,也許愚蠢的問題,但我的Tomcat容器需要知道它使用可部署的容器。如果我將使用app 1.1創建新的容器,我將無法使用--volumes-from 命名該容器相同的名稱並與其鏈接。所以我至少需要替換Tomcat容器的數據卷名稱,對吧? – Zveratko

+0

@Zaveratko數據卷容器包含數據,沒有應用程序,因此該版本不適用於此,其名稱也不會更改。 – VonC

+0

但是,這是我想要的,普通的Tomcat容器,並使用另一個容器(僅用於數據)來存放應用程序二進制文件(這個容器將根據應用程序版本進行版本化/標記)。它需要多一點的編排,但我認爲這是非常合法的做法,不是嗎? – Zveratko

相關問題