2016-07-03 36 views
9

我有一個運行應用程序的Docker Hub容器。通常它會通過克隆源git repo來運行應用程序,但在我想運行特定版本的情況下,應用程序已經標記了各種版本。例如,我可以做一個什麼是標記Docker Hub版本的最佳實踐

git clone https://github.com/author/application.git 
git checkout release-1.0.0 

作爲Docker Hub維護者,我想用容器鏡像軟件版本。除了在發佈發佈時手動進行操作,還有其他選擇嗎?

現在我Dockerfile包含了這樣的事情:

ENV APP_VER=2.0.0 
RUN git clone ...; git checkout ${APP_VER} 

在這個例子中,我會保持這一設置APP_VER到2.1.0,然後泊塢集線器支持泊塢窗文件的標記的分支,但如果我對repo進行了更改,目前還不清楚如何不更改每個分支的Dockerfile。

+1

如果在Github中標記了該文件,則該文件將不會更改,因爲您將鏈接到帶標記的文件,不是?例如,[nginx](https://hub.docker.com/r/_/nginx/)。 – ldg

+0

是的,你必須改變每個版本的文件,它看起來像nginx一樣 – Lizbeth

回答

2

你應該能夠做你通過碼頭工人樞紐的自動化構建和生成設置描述什麼,建立你的Github上的標籤名稱泊塢標籤名稱的圖案匹配。您可以使用通配符和引用源分支/標記名稱的變量{sourceref}`「。

無論何時您使用與Github標籤相匹配的Docker標籤推送新圖像,都會拉取匹配的Dockerfile - 之前的標籤將保持不變。因此,有人可以通過使用標籤作爲參考拉一箇舊碼頭工人圖像和匹配Github的代碼,你所提到的:

ENV APP_VER=2.1.0 
RUN git clone ... app.git; git -C app checkout ${APP_VER} 

在這種情況下,假定您已經泊塢樞紐設置匹配的值和每個標籤(Docker鏡像和Github)是2.1.0

我不太清楚你的意思是「每個分支」,這可能是混淆的一部分,特別是如果你習慣了SVN。在git中,標籤並沒有綁定到分支,而是與特定的提交(或時間點)綁定,因此當您檢索該標籤時,它總是會使用與提交時相同的代碼版本製作。 (通常與發佈時間相同)