首页 > 解决方案 > Maven 模块依赖性和 Docker 中大图像大小的问题

问题描述

我有一个具有以下结构的 maven java 项目:

-my-project
  -audit
  -domain
  -persistence
  -source1
  -source2
  -source3
  -utils
  -validation
 pom.xml
 DockerFile

我的项目包括多个模块。source1, source2,source3依赖于其他模块,如审计、域、验证等。

我正在使用 maven 程序集插件将项目输出及其依赖项、模块和其他文件聚合到一个可运行的包中。

我有每个源的程序集描述符并将它们部署为单独的包。

我只有一个DockerFile用于为服务source1 source2等创建图像。

Docker文件:

FROM java...

ARG ARTIFACT_URL

# User Configs Stages...

RUN curl -o ./source1.zip -L "${ARTIFACT_URL}&a=source1-bundle"
RUN curl -o ./source2.zip -L "${ARTIFACT_URL}&a=source2-bundle"

RUN unzip ./source1.zip -d ./source1/
RUN unzip ./source2.zip -d ./source2/

然后我为每个来源都有 docker-compose。

这种方法的问题是它的图像中source2包含捆绑包。source1我的图像很大,我想让它们更薄。我已经阅读了使用多阶段构建和使用更薄的基础图像等,但我正在努力了解如何更改上述 dockerfile/我的方法来创建更薄的图像。

我的问题是,我可以采取什么方法使我的图像更薄?我可以在这种情况下使用多阶段构建来帮助解决这个问题吗?

也许我可以为依赖模块审计、域等和基础 source1 图像使用不同的图像?

标签: mavendockerdockerfilecontainers

解决方案


在您的场景中,来自不同来源的不同图像将是理想的。您可以将 docker-compose 中的这些单独图像用作单独的服务。


推荐阅读