工作目录相对路径
目录
输出
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 .