WorkdirRelativePath
目录
输出
Relative workdir 'app/src' can have unexpected results if the base image changes
描述
指定WORKDIR
在构建阶段,您可以使用绝对路径,例如/build
或相对路径(如./build
.使用相对路径意味着
工作目录是相对于前一个工作目录的
是。因此,如果您的基础镜像使用/usr/local/foo
作为工作目录,以及
您指定一个相对目录,例如WORKDIR build
,有效工作
directory 变为/usr/local/foo/build
.
这WorkdirRelativePath
build 规则会在您使用WORKDIR
替换为
relative path 的 PATH 中,而无需先在同一 Dockerfile 中指定绝对路径。
此规则的基本原理是,对 base 使用相对工作目录
外部构建的镜像容易损坏,因为工作目录可能会更改
upstream 没有警告,导致目录完全不同
层次结构。
例子
❌ Bad:这假设WORKDIR
在基础镜像中是(如果上游发生变化,则/
web
stage 已损坏)。
FROM nginx AS web
WORKDIR usr/share/nginx/html
COPY public .
✅ Good:前导斜杠可确保WORKDIR
总是以所需的路径结束。
FROM nginx AS web
WORKDIR /usr/share/nginx/html
COPY public .