项目,包括多个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 映像?

阻止移动项目在共享项目中使用某些 .cs 文件

一文说清楚Dockerfile 中VOLUME到底有什么用?

一文说清楚Dockerfile 中VOLUME到底有什么用?

优化 .net core 应用的 dockerfile

Visual Studio - 共享资源文件