我正在嘗試使用 docker 構(gòu)建一個圖像,但如果我做了一些更改并再次構(gòu)建它,那么它會從頭開始。除了從我已經(jīng)做出的更改中繼續(xù)。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 繼續(xù),但它從頭開始有什么建議嗎?謝謝
2 回答

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

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