對於標記需要我創建一個dockerfile來構建我的項目容器的任務,但是我有一套相當複雜的任務,我需要以正確的方式一起工作,以便我的dockerfile對我有任何用處,所以我目前正在構建一個每次需要花費30分鐘的文件,只是爲了確定一些細微的變化是否會以正確的方式影響結果,所以我的問題是,有沒有更好的方法來做到這一點?我正在試圖製作完美的碼頭構建文件,我是否需要每次從頭構建它?
-1
A
回答
1
的Dockerfile best practices,或更早的問題可能會有所幫助:Creating a Dockerfile - docker starts from scratch on each new build
根據我的經驗,全力打造每次意味着你的工作對碼頭工人的緩存機制,通常是通過在Dockerfile早期有COPY . .
。
如果複製到映像中的文件被用於驅動軟件包管理器或下載其他源,請嘗試僅複製腳本或需求文件,然後使用它,然後複製其餘源。
簡化蟒例如從最佳實踐重述鏈接:
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
隨着該結構,只要requirements.txt不改變,第一和COPY
以下RUN
命令使用緩存層和重建是快多了。
0
第一個技巧是使用COPY/ADD來創建Docker構建時需要下載的工件。
第二個技巧是,您可以爲每個步驟創建一個Dockerfile並在接下來的步驟中重用它們。
例如,如果您想安裝postgres db,並在您的映像中安裝wildfly。您只能開始爲postgresDB創建一個Dockerfile,並構建它以創建您的postgres泊塢窗圖像。 然後創建另一個Dockerfile其重用你,Postgres的由
FROM your-postgres
.....
等圖像...
相關問題
- 1. 構建Mercurial需要Python頭文件
- 2. 我如何構建完美的條件
- 3. 試圖構建openface碼頭集裝箱
- 4. jenkins構建碼頭圖像
- 5. 我是否需要構建TinyThread ++?
- 6. 我是否需要Dreamweaver構建網頁?
- 7. 強制碼頭構建「重建」一步
- 8. 使用不同的碼頭文件從源目錄中構建碼頭圖像
- 9. 我需要構建一個擴展頭的IPv6數據包。
- 10. 是否需要頭文件?
- 11. 如何在碼頭文件不存在的情況下構建碼頭圖像
- 12. 碼頭文件中的碼頭構建錯誤
- 13. 頭文件中的結構1頭文件中需要2,我該怎麼做?
- 14. 在碼頭上構建圖像
- 15. 地圖構建器每次都從頭開始重新創建地圖?
- 16. 我需要構建WebApp?
- 17. 碼頭構建創建另一套碼頭圖像,即使構建命令是相同的?
- 18. 我是否需要我的C#項目的構建日誌文件?
- 19. 是否需要在每次構建後更新自定義操作的二進制文件?
- 20. java.lang.ClassNotFoundException:com.facebook.unity.FB每當我測試我的構建
- 21. 交互式碼頭構建從dockerfile?
- 22. 在c中構建vlan頭文件
- 23. 在這種情況下,我是否需要每次創建DocumentBuilderFactory?
- 24. 每次我是否需要在循環中新建一個ArrayList?
- 25. 從頭構建webkit for osx
- 26. 每次從頭開始構建應用程序
- 27. 我是否需要在C程序中編譯頭文件?
- 28. 防止碼頭在更改代碼後從頭開始構建圖像
- 29. 我想爲我的項目從頭開始構建數據集
- 30. 我是否需要在此測試中創建每個對象?
你這裏沒有顯示dockerfile? – manojlds
我的問題是關於這個過程,而不是什麼在dockerfile –
在沒有Docker文件審查我會參考你的指導文檔:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices /我遵循的另一種做法是基於我的「技術」堆棧創建基礎映像。這樣每個應用程序都有一個非常簡單且不復雜的Dockerfile –