gpt4 book ai didi

docker - 将目录复制到 docker 镜像中,同时跳过给定的子目录

转载 作者:行者123 更新时间:2023-12-04 20:32:55 26 4
gpt4 key购买 nike

我必须创建一个 docker 文件,将 MyApp 目录复制到图像中。

MyApp
-libs
-classes
-resources

Libs 目录大约有 50 MB,并且不经常更改,而 Classes 目录大约为 1 MB,并且经常更改。为了优化 docker build,我计划在 Dockerfile 的开头添加 Libs 目录,并在 Dockerfile 的末尾添加其他目录。我目前的做法是这样的
ADD MyApp/libs /opt/MyApp/libs
## do other operations
ADD MyApp/classes /opt/MyApp/resources
ADD MyApp/classes /opt/MyApp/classes

这不是一种可维护的格式,因为将来我可能会将 MyApp 目录中的其他一些目录复制到 docker 镜像中。我的目标是写一个这样的docker文件
ADD MyApp/libs /opt/MyApp/libs
## do other operations
ADD MyApp -exclude MyApp/libs /opt/MyApp

是否有类似的命令来排除复制到 docker 镜像的目录中的某些文件?

最佳答案

我考虑了@nwinkler 解释的方法并添加了一些步骤以使构建一致。

现在我的上下文目录结构如下

-Dockerfile
-MyApp
-libs
-classes
-resources
-.dockerignore
-libs

我将 libs 目录复制到 MyApp 目录的外部。添加了一个 .dockerignore 文件,其中包含以下行
MyApp/libs/*

将 Dockerfile 更新为这样
ADD libs /opt/MyApp/libs
## do other operations
ADD MyApp /opt/MyApp

因为 dockerignore 文件忽略了 MyApp/lib 目录,所以覆盖我之前复制的 libs 目录没有风险。

关于docker - 将目录复制到 docker 镜像中,同时跳过给定的子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41541747/

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