gpt4 book ai didi

docker - 在Dockerfile中,COPY当前目录除一个目录外的所有内容

转载 作者:行者123 更新时间:2023-12-04 08:15:39 25 4
gpt4 key购买 nike

在我的 Dockerfile 中,我有以下内容:

COPY . /var/task

...将我的应用程序代码复制到图像中。

执行此复制时,我需要排除 vendor/ 目录。

  • 我无法将 vendor/ 添加到 .dockerignore,因为当使用 RUN composer 在图像中构建该目录时,该目录需要成为图像的一部分安装
  • 我无法指定应该复制的每个文件和目录,因为它们可能会更改,而且我不能依赖其他开发人员来更新列表。

我试过以下方法,但出现以下错误:

COPY [^vendor$]* /var/task

When using COPY with more than one source file, the destination must be a directory and end with a /

COPY [^vendor$]*/ /var/task

COPY failed: no source files were specified

最佳答案

其实在.dockerignore文件中添加vendor目录即可。

您可以分三个阶段通过 docker build 大致跟踪文件流:

  1. docker build 从您命名的目录中读取文件,忽略 .dockerignore 文件中的内容,并将它们作为 构建上下文.
  2. COPY 指令将构建上下文中的文件复制到容器文件系统中。
  3. RUN 指令做进一步的转换或处理。

如果将 vendor 放在 .dockerignore 文件中,它会阻止目录包含在构建上下文中。构建速度会稍微快一些,COPY 不会将文件复制到图像中。它不会阻止稍后的 RUN composer install 步骤在镜像中创建自己的 vendor 目录。

关于docker - 在Dockerfile中,COPY当前目录除一个目录外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65720449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com