WorkdirRelativePath

输出

Relative workdir 'app/src' can have unexpected results if the base image changes

描述

在构建阶段指定时,您可以使用绝对路径(如 )或相对路径(如 )。使用相对路径意味着 工作目录是相对于前一个工作目录的 是。因此,如果您的基础镜像用作工作目录,并且 您指定一个相对目录,例如 ,有效的工作 目录变为 。WORKDIR/build./build/usr/local/fooWORKDIR build/usr/local/foo/build

如果您使用 a 和 relative path 的 PATH 中,而无需先在同一 Dockerfile 中指定绝对路径。 此规则的基本原理是,对 base 使用相对工作目录 外部构建的镜像容易损坏,因为工作目录可能会更改 upstream 没有警告,导致目录完全不同 层次结构。WorkdirRelativePathWORKDIR

例子

❌ Bad:这假设在基础镜像中是(如果它发生在上游,则 stage 被破坏)。WORKDIR/web

FROM nginx AS web
WORKDIR usr/share/nginx/html
COPY public .

✅ Good:前导斜杠可确保 始终在所需的路径上结束。WORKDIR

FROM nginx AS web
WORKDIR /usr/share/nginx/html
COPY public .