1. 简介
jpom官网
jpom是一款简而轻的低侵入式、在线构建、自动部署、日常运维、项目运维/监控软件。官方描述!
2. jpom安装
jpom是包含两部分的:
- jpom-server 服务端,包含UI界面用于管理构建流程,使用Docker、SSH、Agent连接的服务节点。等...
- jpom-agent 插件端,安装在需要使用jpom-server管理的服务器上,用于跟server端通信,server端通过Agent向Agent所在的服务发送构建和执行命令指令等...
jpom官网有多种安装方式,请自行查阅。需要注意一点的是使用jpom一键安装,使用的JDK是JDK8,如果你自己的项目是JDK17或者更高。推荐使用下载安装,并修改启动shell文件,server端和Agent端都一样。我是使用的JDK17开发和部署环境所以修改的Server.sh文件。注释掉以下部分就可以了:
JAVA_OPTS="$JAVA_OPTS -XX:+UseFastAccessorMethods -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution"
Agent端需要注释掉:
JAVA_OPTS="$JAVA_OPTS -XX:+UseFastAccessorMethods -XX:+PrintAdaptiveSizePolicy -XX:+PrintTenuringDistribution"
如果需要设置成服务,需要注释掉 Service.sh
文件中的部分代码:
3. Jpom的【系统管理->系统配置】
我这边修改了两部分,如下:
3.1 构建路径修改
jpom:
# jpom 数据存储路径, 如果调试模式运行默认路径为【${user.home}/jpom/】,安装运行默认为jar包文件的父级
path: /mnt/sda4 # 默认为空,修改后jpom的data目录和db目录就到配置的路径中。为啥要配置,因为构建路径要配置到大磁盘中去。
# 集群配置
cluster:
# 集群Id,默认为 default 不区分大小写,只能是字母或者数字,长度小于 20
id: default
# 心跳监控时间 (需要大于零) 单位秒 最小配置 5 秒
heart-second: 30
node:
# 节点心跳监控时间 (需要大于零) 单位秒 最小配置 5秒
heart-second: 30
# 节点统计日志保留天数,如果小于等于 0 不自动删除
stat-log-keep-days: 3
# 上传文件的超时时间 单位秒,最短5秒钟
upload-file-timeout: 300
# 节点文件分片上传大小,单位 M,建议小于 5MB(需要考虑插件端上传文件大小限制)
upload-file-slice-size: 1
# 节点文件分片上传并发数,最小1 最大 服务端 CPU 核心数
upload-file-concurrent: 2
# web socket 消息最大长度
web-socket-message-size-limit: 5MB
file-storage:
# 文件中心存储路径
save-pah: /mnt/sda4 # 默认也是空,配置后上传的文件就到配置目录中去了
scan-static-dir-cron: 0 0/1 * * *
# 是否开启静态文件目录监听
watch-monitor-static-dir: true
# 监听静态文件目录层级
watch-monitor-max-depth: 5
3.2 数据库配置
db:
# 数据库默认 支持 :H2、MYSQL、MARIADB、POSTGRESQL
mode: MYSQL # 数据库由默认的H2配置成了,MySql
# 日志存储条数,将自动清理旧数据,配置小于等于零则不清理
log-storage-count: 10000
# H2 模式无需配置 mysql 配置 jdbc 地址
url: jdbc:mysql://192.168.31.120:3306/jpom?useUnicode=true&characterEncoding=UTF-8&useSSL=false
# 数据库账号 默认 jpom
user-name: root
# 数据库密码 默认 jpom 如果自行配置请保证密码强度
user-pwd: admin123#
# h2 数据库缓存大小 kilobyte 1KB 1,024 megabyte 1MB 1,048,576
cache-size: 50MB
# 自动备份间隔天数 小于等于 0 不自动备份
auto-backup-interval-day: 1
# 自动备份保留天数 小于等于 0,不自动删除自动备份数据
auto-backup-reserve-day: 5
# 数据库连接池相关配置
max-active: 500
initial-size: 10
max-wait: 10
min-idle: 1
# 控制台是否打印 sql 信息
show-sql: false
4. Jpom的【系统管理->资产管理】
通过资产管理可以看到jpom系统使用三种方式管理主机:
- jpom-agent (机器管理)
- SSH (SSH管理)
- Docker (Docker管理)
4.1 机器管理
-
列表
-
新增机器,其中【节点账号】【节点密码】可在jpom-agent安装机器的jpom-agent安装目录中找到。参考地址:
/usr/local/jpom-agent/data/agent_authorize.json
# 内容
{"agentName":"jpomAgent","agentPwd":"8Grrc96AAi"}
- 分配是把机器节点分配到指定工作空间中
4.2 SSH管理
1.列表
2.新增SSH节点,可以通过密码和正式两种方式连接到SSH机器
3.终端,可以打开一个ssh的终端命令行
4.分配,把该节点分配到工作空间中
5.文件,可以浏览ssh机器中的文件,并且可以上传,下载等...
6.关联,关联到工作空间
4.3 Docker管理
1.列表
2.新增 Docker节点,jpom使用两种方式连接Docker服务。
-
Docker http管理Docker服务,【其他配置】配置自己的私有仓库,这样使用Docker构建时可以把镜像发送给私有仓库,或者从私有仓库拉取镜像。
-
-
通过SSH方式管理
3.控制台,查看Docker相关信息
4.集群,a). 创建或加入Swarm集群。b). 查看Swarm集群相关信息。
5.分配
6.关联,Docker节点以及分配的工作空间和属于那个集群。
4.3.1 生成Docker http的TLS证书
Docker http TLS证书生成并使用,下面的路径中查看
https://jpom.top/pages/4d0c1b/#tcp-%E7%AB%AF%E5%8F%A3-2375-%E6%96%B0%E5%A2%9E
生成证书的脚本地址
https://gitee.com/dromara/Jpom/raw/master/script/docker-tls.sh
4.4. 共享仓库
添加需要共享的代码代码仓库信息
4.5 脚本库
编写一些通用的脚本代码。
我创建的脚本:
1.清除指定容器的退出状态(clear_container)
container_name=$1;
for container_id in $(docker ps -aqf "name=$container_name")
do
echo "容器ID:$container_id";
exist=$(docker inspect --format '{{.State.Running}}' ${container_id})
if [ "${exist}" == "true" ]; then
echo "$container_id 运行状态。"
else
echo "$container_id 停止状态。"
docker rm $container_id
fi
done
2.构建java web项目(build_maven_javaweb)
# project_name=$1
project_name=ruoyi-admin
echo "参数:$project_name"
mvn clean package -Dmaven.test.skip=true
mkdir -p $project_name/dist/target
cp $project_name/Dockerfile $project_name/dist
cp $project_name/target/$project_name.jar $project_name/dist/target
3.创建nginx docker实例(create_nginx)
# docker_name=$1
docker_name=mynginx
if docker ps -a --format '{{.Names}}' | grep -q $docker_name; then
echo "开始-----移除已经存在的实例 ==> ${docker_name}";
docker rm -f ${docker_name};
echo "结束-----移除已经存在的实例 ==> ${docker_name}";
else
echo "容器 $docker_name 不存在。"
fi
docker run --name $docker_name --restart always \
-v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/nginx/logs:/var/log/nginx \
-v /root/ruoyi-web:/root/ruoyi-web \
-v /root/yudao-web:/root/yudao-web \
-p 8081:8081 \
-p 48081:48081 \
-d nginx;
4.创建Redis容器(create_redis)
# container_name=$1
container_name=myredis;
docker run --name $container_name \
--restart always \
--appendonly yes \
-v /mnt/redis:/data \
-p 6379:6379 \
-d redis redis-server
评论区