dockerfile中add和copy的区别

2024-09-03  本文已影响0人  悟空嘿

在 Dockerfile 中,ADDCOPY 都是用于将文件或目录从宿主机复制到镜像中的指令,但它们有一些关键的区别:

  1. 功能差异

    • COPY:只用于将文件或目录从源路径复制到目标路径。它比较简单,没有其他功能。
    • ADD:除了具有 COPY 的功能外,还能够自动解压缩从源路径复制的压缩文件(如 .tar.gz.bz2 等)。此外,ADD 还可以通过指定 URL 从远程 URL 下载文件并将其复制到目标路径。
  2. 使用场景

    • COPY:推荐在只需要复制文件或目录时使用 COPY,因为它的功能比较简单且更明确,能够提升 Dockerfile 的可读性。
    • ADD:适合在需要解压缩文件或从远程 URL 下载文件的场景下使用,但如果不需要这些额外功能,使用 COPY 会是更好的选择。
  3. 语法

    • COPYCOPY <源路径>... <目标路径>
    • ADDADD <源路径>... <目标路径>

示例

# 基础镜像
FROM ubuntu:20.04
# 设置环境变量
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# 设置工作目录
WORKDIR /usr/src/app
# 复制应用程序文件
# COPY ./target  /usr/src/app\
COPY ./target/addtest.txt  /usr/src/app/
ADD ./target/test.tar.gz /usr/src/app/
# 安装依赖
RUN apt-get update && apt-get install -y python3-pip
RUN pip3 install --no-cache-dir -r requirements.txt
# 暴露端口
EXPOSE 8080
# 运行应用程序
CMD ["python3", "app.py"]
 docker build -f Dockerfile.nginx -t addnginx:v1 .

总结来说,如果只是简单地复制文件或目录,使用 COPY 更为合适;如果需要解压缩或下载远程文件,可以选择使用 ADD

上一篇 下一篇

猜你喜欢

热点阅读