我正在建設一個碼頭工人形象能夠運行所有的我們的Perl應用程序。這些應用程序需要安裝數百個CPAN模塊。碼頭圖像的完整版本需要大約一個小時才能完成。維護docker映像時應如何處理Perl模塊更新?
做初始圖像後,我不知道如何最好地處理持續更新。
我們可以保持一個Dockerfile在Git中,然後修改這個要求,並推新版本多達dockerhub。但是,如果這樣做構建的人沒有所有的中間圖像,然後添加一個CPAN模塊可以是一個非常繁瑣的過程,它可能需要一個小時之前,他們甚至知道,如果新的模塊正確安裝。此外,它會再次下載每個CPAN模塊,這似乎有點冒險,因爲新模塊可能會發生突變。
或者,進行構建的人可以拉取最新的docker-hub映像,然後以交互方式安裝cpan模塊,提交構建並將新映像推送到dockerhub。不過,我們只有我們的dockerhub圖像,但不是主要的Dockerfile。
或者另一種選擇是創建一個Dockerfile爲每一個新的構建,它引用先前dockerhub圖像。這似乎過於複雜,但。
選項1)似乎是錯誤的。我相當肯定,我們不希望從基本操作系統重建整個映像,只安裝一個附加模塊。然而,依賴於沒有Dockerfiles的圖片似乎也有風險。
選擇3或一些變種似乎最「泊塢窗,適當」的解決方案。如果您遵循有組織的標記策略,用戶「升級」到最新版本將能夠利用先前的圖像層,並且只需要構建最新版本。您可能需要創建一個名稱不同的「基礎」版本,以避免在完全重新構建時需要進行完整構建。 – ldg