WorkdirRelativePath

输出

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

描述

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

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

例子

❌ Bad:这假设WORKDIR在基础镜像中是(如果上游发生变化,则/webstage 已损坏)。

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

✅ Good:前导斜杠可确保WORKDIR总是以所需的路径结束。

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