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 .