COPY <src> <dest>
COPY test* /tmp
COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
仅适用于 linux 上的 dockerfile,在 window 上没有用户、组的概念
把所有 hom 开头的文件复制到镜像文件系统的 /mydir/ 目录下
COPY hom* /mydir/
? 匹配 0 或 1 个字符,比如会把 home.txt 文件复制到 /mydir/ 目录下
COPY hom?.txt /mydir/
<dest> 是绝对路径,或相对于 WORKDIR 的路径,源将在目标容器内复制到该路径中
COPY test.txt relativeDir/
等价于
COPY test.txt <WORKDIR>/relativeDir/
将 test.txt 添加到 /absoluteDir/ 目录下
COPY test.txt /absoluteDir/
添加名为 arr[0].txt 的文件
COPY arr[[]0].txt /mydir/
将从 from 指定的构建阶段中寻找源文件 <src>
# 第一构建阶段:将仅用于生成 requirements.txt 文件
FROM tiangolo/uvicorn-gunicorn:python3.9 as requirements-stage
# 将当前工作目录设置为 /tmp
WORKDIR /tmp
# 生成 requirements.txt
RUN touch requirements.txt
# 第二构建阶段,在这往后的任何内容都将保留在最终容器映像中
FROM python:3.9
# 将当前工作目录设置为 /code
WORKDIR /code
# 从第一个阶段复制 requirements.txt;这个文件只存在于前一个 Docker 阶段,这就是使用 --from-requirements-stage 复制它的原因
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt
# 运行命令
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
不能添加 ../something 、 /something ,因为 docker 构建的第一步是将上下文目录(和子目录)发送到 docker 守护进程
# test.txt 是相对路径,相对于构建上下文
COPY test.txt /mkdir/
# 错误写法,文件均不在上下文目录中,并不会被找到
# 这个找的就是构建上下文的上级目录的 test.txt
COPY ../test.txt /mkdir/
# 这个找的是本机根目录下的 test.txt
COPY /test.txt /mkdir/
COPY dir /mydir/
<dest>/base(<src>)
则 <dest> 必须是一个目录,并且必须以斜杠 / 结尾
COPY test1.txt test2.txt /mydir/
它将被视为常规文件,并且 <src> 的内容将写入 <dest>
COPY test.txt /mytext
路径中所有缺失的目录都会自动创建
COPY test.txt /dir/test/my/
<src> 的内容发生变化,第一个遇到的 COPY 指令将使来自 Dockerfile 的所有后续指令的缓存无效,这包括使 RUN 指令的缓存无效
FROM centos
# 添加文件到目录下
COPY test.txt /mydir/
# 将文件内容写入 mytest
COPY test.txt /mytest
# 压缩文件,自动解压
COPY jmeter.log.zip /myzipdir/
# 添加目录
COPY TeamFile /
# 其他文件
COPY jmeter.log /mydir/
# 多个文件
COPY test1.txt test2.txt /mydir/
# 通配符,dest 不存在自动创建
COPY test*.txt /mydir/test/
# 特殊字符串
COPY COPY[[]0].txt /mydir/
WORKDIR /data
# 相对路径
COPY test.txt test/