2017-01-11 62 views
3

最近,我們決定將其中一項服務移至碼頭集裝箱。該服務是另一家公司的產品,他們爲我們提供了碼頭形象。但是,我們需要在容器入口點執行一些額外的配置步驟。向碼頭圖像添加新入口點

我想的第一件事,是從基本映像創建DockerFile,然後添加命令來執行額外的步驟,就像這樣:

From baseimage:tag 
RUN chmod a+w /path/to/entrypoint_creates_this_file 

但是,它失敗了,因爲這些額外的步驟必須是在運行基本容器入口點後運行。

有什麼方法可以擴展基準圖像的入口點?如果沒有,那麼做到這一點的正確方法是什麼?

感謝

+0

原始入口點是否定義爲單個命令或shell腳本? 如果命令: 創建入口點腳本文件(或命令),包括原始命令+配置命令和改變你的Dockerfile'ENTRYPOINT'上市使用它。 如果腳本: 創建一個新的腳本,執行原始入口點腳本,然後執行您自己的配置命令。然後改變'ENTRYPOINT'列表來指向你的新腳本。 – Snorre

+0

謝謝Snorre,是的,這是正確的解決方案。原始入口點是一個shell腳本,正如你所說的,我需要在其他步驟之前在我的自定義入口點執行它。 – sara

+0

很高興聽到問題解決。 – Snorre

回答

4

我終於結束了調用我的新入口點bash腳本的原始入口點bash腳本,做其他額外的配置步驟之前。

2

創建自定義的入口點文件

- >將其添加到圖像

- >將其指定爲您的入口點文件

FROM image:base 

COPY /path/to/my-entry-point.sh /my-entry-point.sh 
// do sth here 

ENTRYPOINT ["/my-entry-point.sh"] 
+2

通過這種方式,基礎圖像入口點將會過期,而我需要先運行它,然後運行我的自定義入口點。 – sara

2

你並不需要甚至創建一個新的Dockerfile。要修改entrypoint你可以運行使用該命令的圖像,如下圖所示:

docker run --entrypoint new-entry-point-cmd baseimage:tag <optional-args-to-entrypoint>

+1

通過這種方式,基礎圖像入口點會過期,而我需要先運行它,然後運行我的自定義入口點。 – sara