maven - 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 图像使用不同的图像?
解决方案
在您的场景中,来自不同来源的不同图像将是理想的。您可以将 docker-compose 中的这些单独图像用作单独的服务。
推荐阅读
- xml - 使用 ansible xml 模块设置 xml 节点属性
- c# - Serilog 中环境 LogContext 的线程安全
- r - 如何将日期时间四舍五入到一天中最近的时间,最好是矢量化的?
- python - 更改保持序列的列表的初始元素
- node.js - 如何检查从 page.evaluateHandle 返回的 jsHandle 是否为空/null?
- r - 标记数据框 (R) 中的一系列行元素
- amazon-web-services - AWS Lambda 层可以在没有函数/处理程序调用层的情况下拦截 Lambda 函数处理程序吗?
- entity-framework - 如何使用实体框架在 Cosmos 中查找不区分大小写条件的记录
- r - 如何创建一个可用作 LHS 并为其赋值的字符串?
- python - 计算机终止 OpenCv 图像采集程序