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 .