-
自行安装docker-compose
-
配置jpom的docker-compose.yml文件

version: '3'
services:
portainer:
image: jpomdocker/jpom
container_name: jpom-server # 容器名为'jpom-server'
restart: always # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "./jpom/logs:/usr/local/jpom-server/logs"
- "./jpom/data:/usr/local/jpom-server/data"
- "./jpom/conf:/usr/local/jpom-server/conf"
environment: # 设置环境变量,相当于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
ports: # 映射端口
- "2122:2122"
3.启动jpom
cd /home/toc/docker-compose/jpom
docker-compose up -d
docker ps 查看服务是否启动

安装jpom的agent插件
提前创建好文件夹 并且切换到对应到文件夹执行命令
mkdir -p /home/toc/docker-compose/jpom/agent/
cd /home/toc/docker-compose/jpom/agent/
apt-get install -y wget && wget -O install.sh https://jpom.top/docs/install.sh && bash install.sh Agent jdk

4.登录jpom

5.配置构建项目设置
5.1配置ssh服务器信息

5.2 点击分配空间

5.3 关联工作空间

5.4 点击配置 。这里配置的是构建后jar和vue前端的dist的存放路径,多个路径换行就可以,我这里前端和后端的存放路径是在不同的服务器上面

5.5 配置docker管理

容器名称是刚刚安装的jpom在容器的名称

host是jpom的服务器的ip地址,端口2375需要配置一下,并开放端口
docker打开2375监听端口
1、编辑dock er.service ,在[service]的ExecStart ,添加 -H tcp://0.0.0.0:2375
# vi /usr/lib/systemd/system/docker.service
2、在ExecStart ,添加 -H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
3、刷新配置文件
systemctl daemon-reload
4、重启docker
sudo systemctl restart docker
或者
sudo systemctl start docker
5、开放端口
添加防火墙2375/tcp ,并重载防火墙
实在对命令不敏感,直接找到/usr/lib/systemd/system/docker.service文件,把步骤2直接替换复制进去就行
如果启动重启docker失败报错:Docker容器异常:See "systemctl status docker.service" and "journalctl -xe" for details.
参考:https://blog.csdn.net/Abraxs/article/details/130549026
daemon.json文件在/etc/docker目录下
解决完重启docker就行
5.6 配置拉取git镜像地址


5.7 构建前端项目


选择容器构建,点击查看当前可用容器,参考配置docker管理,然后新建标签



DSL内容:fromTag: tag改成你自己的
# 基础镜像 目前仅支持 ubuntu-latest
runsOn: ubuntu-latest
# 使用哪个 docker 构建,填写 docker 标签 默认查询可用的第一个,如果 tag 查询出多个也选择第一个结果
fromTag: tag
steps:
- uses: node
version: 22.14.0
# 将容器中的 node_modules 文件缓存到 docker 卷中
- uses: cache
path: ${JPOM_WORKING_DIR}/node_modules
# 使用 copy 文件的方式缓存,反之使用软链的形式。copy 文件方式缓存 node_modules 可以避免 npm WARN reify Removing non-directory
mode: copy
- run: npm config set registry https://registry.npmmirror.com
# 内置变量 ${JPOM_WORKING_DIR} ${JPOM_BUILD_ID}
- run: cd ${JPOM_WORKING_DIR}/ && npm install --registry=https://registry.npmmirror.com && npm run build:prod
选择构建前端的存放地址

直接下一步啥都不用填写,直接保存构建就可以了,构建成功之后在对应目录下面能找到构建你的产物

5.8 构建后端项目,步骤都一样,一下是不同区别的地方

产物目录:对应的你项目本地打成jar后的目录,也是对应你git上面的目录
DSL内容:
runsOn: ubuntu-latest
# 使用哪个 docker 构建,填写 docker 标签 默认查询可用的第一个,如果 tag 查询出多个也选择第一个结果
fromTag: tag
# version 需要在对应镜像源中存在
# java 镜像源 https://mirrors.tuna.tsinghua.edu.cn/Adoptium/
# maven 镜像源 https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/
# node 镜像源 https://registry.npmmirror.com/-/binary/node/
# 目前支持的 uses 插件端 java、maven、node、go、python3、gradle 。如果不满足需求,可自行配置插件
steps:
- uses: java
version: 8
- uses: maven
version: 3.9.9
# 将容器中的 maven 仓库文件缓存到 docker 卷中
- uses: cache
path: /root/.m2
# 将此目录缓存到全局(多个构建可以共享此缓存目录)
type: global
- run: cd ${JPOM_WORKING_DIR} && mvn clean install -am -amd -Pmaster -Dmaven.test.skip=true
run: cd ${JPOM_WORKING_DIR} && mvn clean install -am -amd -Pmaster -Dmaven.test.skip=true 这个Pmaster对应你要启动哪个yml文件,例如我

我要构建jar的时候启动的是master的配置文件,如何动态加载配置文件自行百度

这里对应的发布后执行的命令,就是你构建要存放的文件路径
直接保存构建就可以了