我正在尝试使用 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
提交
取消