工作目录相对路径
目录
输出
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 构建规则会在你使用带有相对路径的 WORKDIR 且未在同一 Dockerfile 中先指定绝对路径时发出警告。
该规则的理由是,为外部构建的基础镜像使用相对工作目录很容易出错,因为工作目录可能会在无预警的情况下在上游发生变更,从而导致你的构建目录层级完全不同。
示例
❌ 错误:这假设基础镜像中的 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 .