docker ADD指令

Docker中的ADD指令用于在构建镜像时将文件、目录或远程URL从源位置复制到镜像的文件系统中

基本语法如下:

ADD <源路径> <目标路径>

ADD指令的功能与特点:

  1. 复制文件或目录

    • 可以将构建上下文(Dockerfile所在目录)中的文件或目录复制到镜像的目标路径。
    • 例如:ADD ./app /app 会将当前目录下的app文件夹复制到镜像中的/app目录。
  2. 支持远程URL

    • 如果源是一个URL,ADD会下载该文件并将其添加到镜像中。例如:ADD http://example.com/file.txt /tmp/file.txt 会下载file.txt并放入镜像的/tmp目录。

注意:URL下载的文件不会自动解压。

  1. 自动解压功能

    • 如果源是一个本地压缩文件(如.tar.tar.gz.zip等),ADD会自动解压到目标路径。
    • 例如:ADD app.tar.gz /app 会解压app.tar.gz并将其内容放入镜像的/app目录。
  2. 通配符支持

    • 支持使用通配符匹配多个文件。例如:ADD *.txt /txtfiles/ 会将上下文中的所有.txt文件复制到镜像的/txtfiles/目录。

示例:

1
2
3
4
5
6
7
8
# 复制本地文件
ADD ./config.json /etc/config.json

# 下载远程文件
ADD https://example.com/data.zip /data/

# 复制并解压本地压缩文件
ADD archive.tar.gz /app/

COPY的区别:

  • ADDCOPY功能更丰富(支持URL和自动解压),COPY更简单明确,只负责复制本地文件或目录,不执行额外操作
  • 推荐:除非需要URL或解压功能,否则优先使用COPY,以保持 Dockerfile 的清晰性和可预测性。