我必须创建一个docker文件,将MyApp目录复制到映像中.
MyApp
-libs
-classes
-resources
Run Code Online (Sandbox Code Playgroud)
Libs目录有大约50 MB,并且它不经常更改,因为Classes目录大约1 MB并且它经常发生变化.为了优化docker构建,我计划在Dockerfile的开头添加Libs目录,并在Dockerfile的末尾添加其他目录.我目前的做法是这样的
ADD MyApp/libs /opt/MyApp/libs
## do other operations
ADD MyApp/classes /opt/MyApp/resources
ADD MyApp/classes /opt/MyApp/classes
Run Code Online (Sandbox Code Playgroud)
这不是可维护的格式,因为将来我可能在MyApp目录中有一些其他目录要复制到docker镜像中.我的目标是写一个像这样的docker文件
ADD MyApp/libs /opt/MyApp/libs
## do other operations
ADD MyApp -exclude MyApp/libs /opt/MyApp
Run Code Online (Sandbox Code Playgroud)
是否有类似的命令来排除复制到docker镜像的目录中的某些文件?
我考虑了 @nwinkler 解释的方法,并添加了一些步骤以使构建一致。
现在我的上下文目录结构如下
-Dockerfile
-MyApp
-libs
-classes
-resources
-.dockerignore
-libs
Run Code Online (Sandbox Code Playgroud)
我将libs目录复制到MyApp目录的外部。添加了一个 .dockerignore 文件,其中包含以下行
MyApp/libs/*
Run Code Online (Sandbox Code Playgroud)
将 Dockerfile 更新为这样
ADD libs /opt/MyApp/libs
## do other operations
ADD MyApp /opt/MyApp
Run Code Online (Sandbox Code Playgroud)
由于 dockerignore 文件忽略 MyApp/lib 目录,因此覆盖我之前复制的 libs 目录没有风险。
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |