我有一个具有以下结构的Maven Java项目:
-my-project
-audit
-domain
-persistence
-source1
-source2
-source3
-utils
-validation
pom.xml
DockerFile
我的项目包含多个模块。 source1
,source2
,source3
依赖于其他模块,例如审核,域,验证等。
我正在使用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映像?
答案 0 :(得分:0)
在您的情况下,最好使用来自不同来源的不同图像。您可以将来自docker-compose的那些单独的映像用作单独的服务。