项目,包括多个Dockerfile和共享某些文件的应用。如何构造?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目,包括多个Dockerfile和共享某些文件的应用。如何构造?相关的知识,希望对你有一定的参考价值。
我有一个包含多个Dockerfile的项目。
树像,
.
├── app1
│ ├── Dockerfile
│ ├── app.py
│ └── huge_modules/
├── app2
│ ├── Dockerfile
│ ├── app.py
│ └── huge_modules/
├── common
│ └── my_lib.py
└── deploy.sh
要构建我的应用程序,common /是必需的,我们必须在Dockerfile中复制它。但是,Dockerfile无法负担从其父目录复制文件的权限。
确切地说,如果在项目根目录中使用docker build
选项运行-f
,则是可能的。但是我不想这样做,因为构建上下文会不必要地变大。在构建app1时,我不喜欢在构建上下文中包含app2 / huge_modules /(与构建app2时相同)。
因此,我在每个应用程序目录中准备一个构建脚本。像这样。
cd $(dirname $0)
cp ../common/* ./
docker build -t app1 .
但是这种解决方案对我来说似乎很难看。在这种情况下是否有好的解决方案?
答案
[一种可能的解决方案是使用您提到的-f标志从顶层目录开始构建过程,以动态生成.dockerignore文件。
另一答案
[构建包含common
库的基础图像,然后在此基础上构建两个应用程序图像。您可能最终会稍微进行一些重组,以为常用文件提供Dockerfile:
以上是关于项目,包括多个Dockerfile和共享某些文件的应用。如何构造?的主要内容,如果未能解决你的问题,请参考以下文章
如何创建和推送具有多个 dockerfile 的应用程序的 docker 映像?
一文说清楚Dockerfile 中VOLUME到底有什么用?