痛点提问:项目部署还是手动打包上传?每次发版都要SSH登录服务器?多服务器部署繁琐还容易出错?想要Jenkins但觉得太重?
一、项目背景及简介
很多中小团队的部署流程仍停留在"打包、上传、SSH、重启、看日志"的手工阶段。项目少时还能靠经验撑住,一旦服务数量增加,环境差异、权限分散、发布记录缺失、回滚困难就会集中爆发。
Jpom 正是为这种场景设计的轻量级运维平台。dromara jpom-简而轻的低侵入式在线构建、自动部署、日常运维、项目运维监控软件,项目来自 Gitee 热门仓库 dromara/Jpom,截至校验时,项目拥有 12,008 Star、1,923 Fork,主语言为 Java。
对于不想一上来就建设复杂 DevOps 平台的团队,Jpom 是很接地气的选择。
项目地址:https://gitee.com/dromara/Jpom
核心价值:
-
解决中小团队部署流程手工化、低效的痛点
-
轻量级平台,无需复杂DevOps建设成本
-
把常见运维动作产品化,少写脚本、少记命令
-
Java技术栈,国内团队理解和二开友好

二、目标客户
-
中小Java团队:没有专职DevOps,需要可视化发布流程
-
传统项目维护者:存量系统需要接入自动化部署
-
多服务器运维者:需要统一管理多台服务器部署
-
快速验证团队:需要轻量级方案快速验证自动化价值
用户需求痛点:
-
手工部署效率低,容易出错
-
多服务器部署环境差异大
-
发布记录缺失,问题难追溯
-
回滚流程复杂,恢复时间长
-
Jenkins太重,维护成本高

三、平台定位
Jpom定位为轻量级Java项目自动部署运维平台,把"构建、部署、日志、脚本、节点"高频动作做闭环,作为"从手工发布走向自动化"的第一步。
愿景:让每个Java团队都能拥有自己的发布控制台,部署不再是令人头疼的手工活。

四、平台技术
| 技术选型 | 选型理由 |
|---|---|
| Java | 核心服务端语言,适合长期运行的运维平台 |
| Spring生态 | 承载Web接口、权限、任务调度等后端能力 |
| 前端管理界面 | 提供项目、节点、脚本、构建、日志可视化操作 |
| Agent架构 | 通过节点代理连接多台服务器,降低集中式平台直接暴露风险 |
| Git集成 | 支持从代码仓库拉取代码 |
| Maven/Gradle/npm | 支持多种构建工具 |
技术特性:
-
服务端+Agent架构,分布式部署安全可控
-
通过节点代理管理多台服务器
-
集成Git仓库拉取、构建并发布应用
-
Web页面查看运行日志,减少频繁登录服务器

五、平台核心功能
-
项目管理:统一管理多个 Java、Node.js、静态站点或脚本项目
-
在线构建:从 Git 仓库拉取代码,执行 Maven、Gradle、npm 等构建命令
-
自动部署:构建完成后分发到指定节点,并执行启动、停止、重启流程
-
日志查看:在 Web 页面查看运行日志,减少频繁登录服务器
-
脚本管理:沉淀常用 Shell 脚本,支持权限控制和执行记录
-
节点管理:通过 Agent 管理多台服务器,适合多环境部署
-
权限审计:对人员、项目、执行记录进行管理,降低误操作风险
-
文件管理:支持在线文件管理和编辑
六、平台独特优势
-
部署成本低:不需要先搭建完整Kubernetes或Jenkins集群
-
低侵入性:对现有项目改造少,适合存量系统接入
-
Java技术栈:国内团队理解和二次开发友好
-
功能闭环完整:从构建到部署、日志、脚本、节点都有覆盖
-
可视化操作:Web界面替代命令行,降低使用门槛
-
Agent安全架构:节点代理模式,平台不直接暴露服务器
-
Dromara社区:国内知名开源社区,项目质量有保障
-
热度可靠:12K+ Star说明有真实使用基础

七、平台安装使用
Docker方式体验最简单。
先准备数据目录:
mkdir -p ~/jpom-server/logs ~/jpom-server/data
启动服务端:
docker run -d \
--name jpom-server \
-p 2122:2122 \
-v ~/jpom-server/logs:/usr/local/jpom-server/logs \
-v ~/jpom-server/data:/usr/local/jpom-server/data \
jpomdocker/jpom
查看容器状态:
docker ps | grep jpom-server
访问控制台:
open http://localhost:2122
生产环境建议:
-
放在内网或VPN后面
-
配置反向代理和HTTPS
-
设置强密码和最小权限账号
Node.js项目部署示例:
创建 server.js:
const http = require("http");
const port = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "application/json; charset=utf-8" });
res.end(JSON.stringify({
service: "jpom-demo",
path: req.url,
status: "running",
time: newDate().toISOString()
}));
});
server.listen(port, () => {
console.log(`jpom-demo started at http://localhost:${port}`);
});
在 Jpom 中配置:
-
启动命令:
PORT=3000 node server.js -
停止命令:配合进程管理器使用
-
生产环境推荐使用 systemd、pm2 或容器方式托管
八、应用场景及案例说明
-
中小型Java团队:快速建立统一发布入口,减少人工SSH,部署效率提升70%
-
多服务器部署:将不同节点纳入统一控制台管理,运维复杂度降低50%
-
测试/预发环境:让测试人员可按权限触发部署,而不是反复找开发,协作效率提升40%
-
传统项目改造:不改业务代码,也能接入构建、发布、日志能力,存量系统自动化率提升80%
-
私有化交付项目:客户现场环境复杂时,用Jpom做轻量运维面板,交付质量提升,客户满意度增加
部署流程优化效果:
-
手工部署时间:从30分钟缩短到5分钟
-
多服务器并行部署:支持批量操作,时间不再随服务器数线性增长
-
回滚时间:从找备份、手动恢复缩短到一键回滚
-
发布记录:完整记录谁在什么时间发布了什么版本,可追溯性100%
总结
Jpom 的价值在于务实:它没有要求团队一次性完成云原生改造,而是围绕构建、部署、日志、脚本、节点这些高频动作做闭环。
金句:自动化的第一步不是追求完美,而是先把"谁在什么时间发布了什么版本"记录清楚。Jpom让你迈出这关键一步。
项目地址:https://gitee.com/dromara/Jpom
117

被折叠的 条评论
为什么被折叠?



