Maven模块依赖关系以及Docker中的大映像问题

时间:2019-10-22 09:59:23

标签: maven docker dockerfile containers

我有一个具有以下结构的Maven Java项目:

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

我的项目包含多个模块。 source1source2source3依赖于其他模块,例如审核,域,验证等。

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

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

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

DockerFile:

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映像?

1 个答案:

答案 0 :(得分:0)

在您的情况下,最好使用来自不同来源的不同图像。您可以将来自docker-compose的那些单独的映像用作单独的服务。