WorkdirRelativePath

输出

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

描述

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

WorkdirRelativePath 构建规则会在您在同一 Dockerfile 中使用相对路径的 WORKDIR 而没有先指定绝对路径时发出警告。此规则的基本原理是,对于外部构建的基础镜像使用相对工作目录容易导致构建中断,因为上游的工作目录可能在没有警告的情况下发生变化,从而导致您的构建目录结构完全不同。

示例

❌ 错误做法:这假定基础镜像中的 WORKDIR/(如果上游发生变化,则 web 阶段将中断)。

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

✅ 正确做法:使用开头的斜杠可确保 WORKDIR 始终指向所需路径。

FROM nginx AS web
WORKDIR /usr/share/nginx/html
COPY public .
页面选项