一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Docker 镜像复制中 COPY 目标路径如何写

时间:2026-08-11 08:46:49 编辑:袖梨 来源:一聚教程网

COPY目标路径须为绝对路径或基于WORKDIR的相对路径,未设WORKDIR时必须以/开头;路径自动创建父目录;末尾斜杠影响目标解释:/dest/视为目录,/dest视为文件;多阶段构建中路径始终相对于当前阶段根文件系统。

COPY 指令的目标路径是镜像内的绝对路径,必须以 / 开头(除非使用相对路径配合 WORKDIR),且路径会自动创建父目录(Docker 20.10+ 支持)。


COPY 目标路径必须是绝对路径或基于 WORKDIR 的相对路径

如果未设置 WORKDIR,目标路径必须以 / 开头,比如:

COPY app.py /app/app.py

这表示把宿主机的 app.py 复制到镜像根目录下的 /app/app.py。注意:/app 目录不存在时,Docker 会自动创建。

用 WORKDIR 简化路径写法

推荐先用 WORKDIR 设定工作目录,后续 COPY 就可用相对路径:

WORKDIR /app

COPY requirements.txt .

COPY . .

这里两个 . 都指代当前 WORKDIR(即 /app)。第一个 . 表示“复制到当前目录”,第二个 . 表示“把当前目录下所有文件复制进来”。

目标路径末尾是否加斜杠有区别

目标路径是否以 / 结尾,影响 Docker 对目标的解释方式:

  1. COPY file.txt /dest/ → 如果 /dest 是目录,复制为 /dest/file.txt;如果 /dest 不存在,Docker 创建目录并放入文件
  2. COPY file.txt /dest → 如果 /dest 已存在且是目录,报错;如果 /dest 不存在或为文件,Docker 把 file.txt 写成 /dest 这个新文件(覆盖同名文件)

常见易错点

  1. 误写成 COPY src ./dst —— ./dst 不合法,Docker 不识别当前目录的 . 作为目标前缀(除非前面有 WORKDIR
  2. 目标路径拼写错误,如 /opt/app 写成 /opt/app/(虽多数情况不影响,但语义不同,建议统一风格)
  3. 在多阶段构建中,目标路径仍以当前阶段的根文件系统为基准,与前一阶段无关

热门栏目