Dockerfile(3) - WORKDIR 指令详解
WORKDIR
- 切换到镜像中的指定路径,设置工作目录
- 在 WORKDIR 中需要使用绝对路径,如果镜像中对应的路径不存在,会自动创建此目录
- 一般用 WORKDIR 来替代 RUN cd <path> && <do something> 切换目录进行操作的指令
- WORKDIR 指令为 Dockerfile 中跟随它的任何 RUN、CMD、ENTRYPOINT、COPY、ADD 指令设置工作目录
- 如果 WORKDIR 不存在,即使它没有在任何后续 Dockerfile 指令中使用,它也会被创建
小栗子
会将宿主机的 test.txt 文件复制到 镜像的 /tmp/test.txt
WORKDIR /tmp
COPY test.txt .
使用相对路径的场景
WORKDIR 指令可以在 Dockerfile 中多次使用
如果提供了相对路径,它将相对于前一个 WORKDIR 指令的路径
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
pwd 的输出将会是 /a/b/c
推荐
为了避免出错,推荐WORKDIR指令中只使用绝对路径
使用环境变量
WORKDIR 指令可以使用前面 ENV 设置的环境变量
ENV DIRPATH=/path WORKDIR $DIRPATH/$DIRNAME RUN pwd # /path/$DIRNAME