github编辑

WORKDIR 指定工作目录

基本语法

WORKDIR <工作目录路径>

WORKDIR 指定后续指令的工作目录。如果目录不存在,Docker 会自动创建。


基本用法

WORKDIR /app

RUN pwd          # 输出 /app
RUN echo "hello" > world.txt    # 创建 /app/world.txt
COPY . .         # 复制到 /app/

为什么需要 WORKDIR

常见错误

# ❌ 错误:cd 在下一个 RUN 中无效
RUN cd /app
RUN echo "hello" > world.txt    # 文件在根目录!

原因分析

每个 RUN 都在新容器中执行,前一个 RUN 的内存状态(包括工作目录)不会保留

正确做法


相对路径

WORKDIR 支持相对路径,基于上一个 WORKDIR:


使用环境变量


多阶段构建中的 WORKDIR


最佳实践

1. 尽早设置 WORKDIR

2. 使用绝对路径

3. 不要用 RUN cd

4. 适时重置 WORKDIR


与其他指令的关系

指令
WORKDIR 的影响

RUN

在 WORKDIR 中执行命令

CMD

在 WORKDIR 中启动

ENTRYPOINT

在 WORKDIR 中启动

COPY

相对目标路径基于 WORKDIR

ADD

相对目标路径基于 WORKDIR


运行时覆盖

使用 -w 参数覆盖工作目录:


本章小结

要点
说明

作用

设置后续指令的工作目录

语法

WORKDIR /path

自动创建

目录不存在会自动创建

持久性

影响后续所有指令,直到下次 WORKDIR

不要用

RUN cd /path(无效)

延伸阅读

最后更新于