Solon (可替换 SpringBoot)集成 Docker 实战:30分钟搞定容器化部署
作为 Java 开发者,你是否已经厌倦了 Spring Boot 容器化过程中的各种复杂配置和坑点?想要尝试更轻量、更高效的框架?那么 Solon 绝对值得你关注。今天我就带你实战 Solon 框架与 Docker 的集成,从环境准备到最终部署,全程避坑指南,让你 30 分钟内轻松搞定!
为什么选择 Solon + Docker?
在微服务架构盛行之下,应用容器化已成为标配。但传统的 Spring Boot 虽然功能强大,但在启动速度、内存占用和容器化体验上仍有优化空间。听一个老同事说,他们公司经常有1GB大小的 Spring Boot Jar 包。
Solon 的优势:
- 启动速度极快:Solon 应用的启动时间通常是 Spring Boot 的
1/10到1/5 - 内存占用更小:基础镜像体积更小,运行时内存消耗更低。通常只有 Spring Boot 的
1/10到1/2 - 配置更简洁:Docker 集成配置简单明了,减少踩坑概率
- 原生支持容器化:从设计之初就考虑了云原生场景
环境准备:三步搞定基础配置
在开始之前,确保你的本地环境满足以下要求:
1. 确认环境版本
- JDK 版本:Solon 支持 JDK 8+,推荐使用 JDK 11 或 17 以获得更好的容器化支持
- Docker 版本:Docker 20.10+,推荐使用 Docker Desktop 4.0+
- Maven 版本:Maven 3.6+,确保插件兼容性
快速验证命令:
java -version
docker -v
mvn -v
2. 创建 Solon 项目
如果你还没有 Solon 项目,可以通过网页版生成器快速创建:
https://solon.noear.org/start/
核心步骤:Docker 集成实战
1. 配置 Maven 插件
在 pom.xml 中添加 Docker 打包插件。这里我们使用经过验证的 spotify 插件:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<!-- 镜像名称配置 -->
<imageName>solon-demo</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<!-- 使用推荐的基础镜像 -->
<baseImage>adoptopenjdk/openjdk11:jre-11.0.11_9-alpine</baseImage>
<!-- 容器启动命令 -->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar", "--server.port=8080", "--drift=1"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
避坑提示:
- 使用 alpine 版本的 JDK 镜像可以显著减小镜像体积(如果不兼容,可以再换个别的)
- entryPoint 必须使用数组格式,确保参数传递正确
- 确保 finalName 与打包后的 jar 包名称一致
- 加上
--drift=1表示当前环境ip会漂移的(如果有注册服务,当下线时要求不作健康检测)。这是 solon 对云原生的一种优化。
2.备选方案:使用 Dockerfile
如果你更喜欢传统的 Dockerfile 方式,可以在项目根目录创建 Dockerfile:
# 使用轻量级基础镜像
FROM adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
# 设置工作目录
WORKDIR /app
# 复制 jar 文件
COPY target/solon-demo-1.0.0.jar app.jar
# 暴露端口(根据你的应用配置调整)
EXPOSE 8080
# 启动应用
ENTRYPOINT ["java", "-jar", "app.jar", "--server.port=8080", "--drift=1"]
然后在 pom.xml 中配置插件使用 Dockerfile:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<imageName>solon-demo</imageName>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
3. 构建和运行
构建 Docker 镜像:
# 先打包应用
mvn clean package
# 构建 Docker 镜像
mvn docker:build
构建成功后,验证镜像:
docker images | grep solon-demo
运行容器:
# 第一次运行
docker run -d -p 8080:8080 --name solon-app solon-demo
# 查看运行状态
docker ps | grep solon-app
# 查看日志
docker logs solon-app
容器管理命令:
# 停止容器
docker stop solon-app
# 重启容器
docker restart solon-app
# 删除容器
docker rm solon-app
进阶技巧:优化和部署
1. 镜像标签管理和推送
为镜像打标签并推送到镜像仓库:
# 打标签
docker tag solon-demo:latest your-repo/solon-demo:1.0.0
docker tag solon-demo:latest your-repo/solon-demo:latest
# 推送到仓库
docker push your-repo/solon-demo:1.0.0
docker push your-repo/solon-demo:latest
2. 生产环境配置
对于生产环境,建议添加健康检查和资源限制:
docker run -d \
-p 8080:8080 \
--name solon-app \
--memory=512m \
--cpus=1.0 \
solon-demo
常见问题排查
1. 容器启动后立即退出
- 检查应用启动日志:docker logs solon-app
- 确认 jar 包路径正确
- 验证端口是否被占用
2. 应用无法访问
- 检查端口映射:docker ps 确认端口映射关系
- 验证防火墙设置
- 检查应用监听的地址(确保是 0.0.0.0 而不是 127.0.0.1)
3. 镜像体积过大
- 使用 alpine 版本的基础镜像
- 多阶段构建去除构建依赖
- 使用 JRE 而不是完整的 JDK
总结
Solon 与 Docker 的集成相比传统框架更加轻量简洁,主要优势体现在:
- 配置简单:Maven 插件配置直观,减少出错概率
- 镜像小巧:基础镜像选择灵活,最终镜像体积更小
- 启动快速:容器启动速度更快,适合快速扩缩容
通过本文的实战指南,你应该能够在 30 分钟内完成 Solon 应用的 Docker 化。赶紧拿起你的 Solon 项目实践一下吧!如果在实践中遇到任何问题,欢迎在评论区交流讨论。
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
两大院士领衔,AI 与开源创新巅峰对话!全球开源技术峰会 GOTC 2025 重磅来袭!
11 月 1 日 - 2 日,全球开源技术峰会 GOTC 2025 将在北京亦庄・通明湖会展中心举行。 此次峰会,中国工程院院士倪光南、中国科学院院士梅宏领衔,携手李开复、陆首群等 100+ 行业大咖,探讨AI开源前沿! 为期 2 天的 GOTC 2025 开源技术与行业盛会,将通过行业展览、主题发言、圆桌讨论等形式来诠释此次大会主题 ——“万源共振,智构未来”。会议聚焦 Agentic AI、大模型时代的 “开源”、AI + 软件工程、软件基础设施智能化、AI Coding、具身智能等热门话题,探讨开源未来,助力开源发展。 主论坛议程亮点速览: 亮点一:北京经信局党组书记、局长姜广智、北京经济技术开发区管委会主任王磊、开放原子开源基金会理事长程晓明开场致辞,点燃开源热情 亮点二:倪光南院士、梅宏院士发表主旨演讲,为开源与智能产业注入权威引领与前瞻判断 亮点三:中国开源软件推进联盟名誉主席陆首群带来关于AI与开源创新的深度洞见 亮点四:零一万物CEO、创新工场董事长李开复将解析从ChatBot到Agent的跃进与机会;开源中国董事长马越带来他关于开源商业化的探索与思考 亮点五:零一万物...
-
下一篇
复旦大学与美团联合发布 R-HORIZON,长链推理评测框架
复旦大学与美团LongCat联合推出 R-HORIZON——首个系统性评估与增强 LRMs 长链推理能力的评测框架与训练方法。 据介绍,R-HORIZON 提出了问题组合(Query Composition)方法,通过构建问题间的依赖关系,将孤立任务转化为复杂的多步骤推理链。 以数学任务为例,该方法包含三个步骤: 1. 信息提取:从独立问题中提取核心数值、变量等关键信息 2. 依赖构建:将前序问题的答案嵌入到后续问题的条件中 3. 链式推理:模型必须顺序解决所有子问题才能获得最终答案 方法优势: 灵活扩展:可自由控制推理链长度(n=2, 4, 8...) 精确可控:可灵活设定问题间的依赖强度 高效低成本:基于现有数据集构建,无需额外人工标注 基于此方法,团队构建了R-HORIZON Benchmark用于系统性评估 LRMs 的多步推理能力,同时生成了长链推理训练数据,通过强化学习(RLVR)提升模型性能。 R-HORIZON 方法流程——从单 — 问题到复杂推理链的转化及应用场景 R-HORIZON 标志着大型推理模型研究的范式转变——从「能解决什么问题」到「能走多远」。 技术贡献 ...
相关文章
文章评论
共有0条评论来说两句吧...

微信收款码
支付宝收款码