0

0

Solon (可替换 SpringBoot)集成 Docker 实战:30分钟搞定容器化部署

霞舞

霞舞

发布时间:2025-10-29 12:53:01

|

363人浏览过

|

来源于php中文网

原创

solon (可替换 springboot)集成 docker 实战:30分钟搞定容器化部署

作为一名 Java 开发者,你是否受够了 Spring Boot 在容器化过程中繁琐的配置和层出不穷的“坑”?想尝试更轻量、更高性能的替代方案吗?那不妨了解一下 Solon 框架。本文将手把手带你完成 Solon 与 Docker 的集成部署,从环境搭建到上线运行,全程避坑,确保你能在 30 分钟内顺利完成容器化转型!

为何选择 Solon + Docker?

在微服务与云原生大行其道的今天,应用容器化已成为开发标配。然而,Spring Boot 虽功能全面,却存在启动慢、内存占用高、镜像臃肿等问题。据一位资深开发者反馈,他们团队常维护超过 1GB 的 Spring Boot 打包文件。

Solon 的核心优势:

  • 极速启动:相比 Spring Boot,Solon 启动速度提升 5~10
  • 低资源消耗:运行时内存仅为 Spring Boot 的 1/10~1/2,基础镜像更小
  • 配置简洁高效:Docker 集成无需复杂脚本,上手即用
  • 天生云原生:框架设计之初就深度适配容器与分布式场景

环境准备:三步快速起步

开始前,请确认本地开发环境满足以下条件:

1. 版本要求一览

  • JDK:支持 JDK 8 及以上,推荐使用 JDK 11 或 JDK 17,更适合容器运行
  • Docker:建议版本 20.10+,推荐安装 Docker Desktop 4.0+
  • Maven:需 3.6+,保障插件兼容性

快速检测命令如下:

java -versiondocker -vmvn -v

2. 创建 Solon 工程

若尚未有项目,可通过官方在线生成器一键创建:

https://solon.noear.org/start/

实战环节:Docker 集成全流程

1. 添加 Maven 插件配置

pom.xml 中引入经过广泛验证的 spotify/docker-maven-plugin 插件:

<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>
        <!-- 复制 jar 包至镜像 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

⚠️ 注意事项:

  • 推荐使用 Alpine 版 JDK 镜像以压缩镜像体积(如遇兼容问题可换为标准版)
  • entryPoint 必须为 JSON 数组格式,避免参数解析错误
  • 确保 finalName 与实际打包的 JAR 名称一致
  • --drift=1 表示当前环境 IP 可能动态变化,适用于注册中心场景,下线时不进行健康检查,是 Solon 对云原生的优化策略

2. 替代方案:使用 Dockerfile

若偏好传统方式,可在项目根目录创建 Dockerfile

# 使用轻量级 OpenJDK JRE 镜像
FROM adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
<h1>设置工作目录</h1><p>WORKDIR /app</p><h1>复制打包后的 jar 文件</h1><p>COPY target/solon-demo-1.0.0.jar app.jar</p><h1>暴露服务端口</h1><p>EXPOSE 8080</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/ai/1927" title="Texta"><img
                                                                                src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d58b732d4595.png" alt="Texta"  onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/ai/1927" title="Texta">Texta</a>
                                                                        <p>AI博客和文章一键生成</p>
                                                                </div>
                                                                <a href="/ai/1927" title="Texta" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div><h1>容器启动命令</h1><p>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>
<!-- 指定 Dockerfile 路径 -->
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

3. 构建并运行容器

执行以下命令完成构建:

# 先打包项目
mvn clean package</p><h1>构建 Docker 镜像</h1><p>mvn docker:build

构建完成后查看镜像:

docker images | grep solon-demo

启动容器:

# 启动容器并映射端口
docker run -d -p 8080:8080 --name solon-app solon-demo</p><h1>查看运行状态</h1><p>docker ps | grep solon-app</p><h1>查看日志输出</h1><p>docker logs solon-app

常用容器管理命令:

# 停止容器
docker stop solon-app</p><h1>重启容器</h1><p>docker restart solon-app</p><h1>删除容器</h1><p>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</p><h1>推送至远程仓库</h1><p>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. 镜像体积过大

  • 使用 JRE 镜像替代完整 JDK
  • 采用 Alpine 系统基础镜像
  • 考虑多阶段构建,剔除编译依赖

总结

Solon 框架结合 Docker,实现了极简高效的容器化体验,主要体现在:

  • 配置清晰:Maven 插件开箱即用,减少人为错误
  • 镜像精简:最小可控制在 100MB 以内
  • 启动飞快:秒级启动,适合弹性扩缩容场景

通过本文的实战步骤,你已具备将 Solon 项目快速 Docker 化的能力。现在就动手试试吧!遇到问题欢迎留言交流。

源码地址:点击下载

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

154

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

88

2026.01.26

spring boot框架优点
spring boot框架优点

spring boot框架的优点有简化配置、快速开发、内嵌服务器、微服务支持、自动化测试和生态系统支持。本专题为大家提供spring boot相关的文章、下载、课程内容,供大家免费下载体验。

138

2023.09.05

spring框架有哪些
spring框架有哪些

spring框架有Spring Core、Spring MVC、Spring Data、Spring Security、Spring AOP和Spring Boot。详细介绍:1、Spring Core,通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了组件之间的耦合度;2、Spring MVC,提供基于模型-视图-控制器的架构,用于开发灵活和可扩展的Web应用程序等。

408

2023.10.12

Java Spring Boot开发
Java Spring Boot开发

本专题围绕 Java 主流开发框架 Spring Boot 展开,系统讲解依赖注入、配置管理、数据访问、RESTful API、微服务架构与安全认证等核心知识,并通过电商平台、博客系统与企业管理系统等项目实战,帮助学员掌握使用 Spring Boot 快速开发高效、稳定的企业级应用。

73

2025.08.19

Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性
Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性

Spring Boot 是一个基于 Spring 框架的 Java 开发框架,它通过 约定优于配置的原则,大幅简化了 Spring 应用的初始搭建、配置和开发过程,让开发者可以快速构建独立的、生产级别的 Spring 应用,无需繁琐的样板配置,通常集成嵌入式服务器(如 Tomcat),提供“开箱即用”的体验,是构建微服务和 Web 应用的流行工具。

144

2025.12.22

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

268

2025.12.24

Spring Boot企业级开发与MyBatis Plus实战
Spring Boot企业级开发与MyBatis Plus实战

本专题面向 Java 后端开发者,系统讲解如何基于 Spring Boot 与 MyBatis Plus 构建高效、规范的企业级应用。内容涵盖项目架构设计、数据访问层封装、通用 CRUD 实现、分页与条件查询、代码生成器以及常见性能优化方案。通过完整实战案例,帮助开发者提升后端开发效率,减少重复代码,快速交付稳定可维护的业务系统。

32

2026.02.11

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.2万人学习

C# 教程
C# 教程

共94课时 | 10.8万人学习

Java 教程
Java 教程

共578课时 | 78.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号