我正在嘗試使用 docker 構建一個圖像,但如果我做了一些更改并再次構建它,那么它會從頭開始。除了從我已經做出的更改中繼續。sudo docker build -t flask-app .我不知道為什么,但它沒有使用緩存更新示例初始 dockerfileFROM python:3.6#working dirWORKDIR /app#copying contentCOPY . /app#Requirement installationRUN pip3 install -r requirements.txt#Command to executeCMD [ "python3", "app.py" ]后來的dockerfileFROM python:3.6#working dirWORKDIR /app#copying contentCOPY . /app#Requirement installationRUN pip3 install -r requirements.txt#Port to exposeEXPOSE 8000#Command to executeCMD [ "python3", "app.py" ]希望它知道從 Expose 8000 繼續,但它從頭開始有什么建議嗎?謝謝
2 回答

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
復制命令#
要求安裝后使用COPY . /app
,因為Dockerfile也包含在其中,并且會被復制到/app。
Dockerfile 中的 COPY 命令允許您將一個或多個外部文件導入到 Docker 映像中。始終執行 COPY 命令以獲得最新版本的外部文件。
如果第一個 COPY 命令上的所有外部文件的內容相同,則將使用層緩存,并且所有后續命令直到下一個 ADD 或 COPY 命令都將使用層緩存。
然而,如果一個或多個外部文件的內容不同,則所有后續命令將在不使用層緩存的情況下執行。
為了利用 Docker 中的層緩存,您應該以經常更改的步驟(例如 COPY)來構建 Dockerfile,使其位于 Dockerfile 文件的末尾。這將確保不會不必要地重建與執行相同操作相關的步驟。

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
COPY . /app
如果您傳入的上下文有任何微小的變化,那么這一步將被重新評估。值得先復制requirements.txt
,然后從中安裝依賴項,然后復制其余部分,以有效地使用緩存。
添加回答
舉報
0/150
提交
取消