docker-compose安装jpom,并构建前后端项目教程

  1. 自行安装docker-compose

  2. 配置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的配置文件,如何动态加载配置文件自行百度

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

直接保存构建就可以了

相关推荐
Ttang239 分钟前
SpringBoot(4)——SpringBoot自动配置原理
java·开发语言·spring boot·后端·spring·自动配置·原理
苏雨流丰17 分钟前
Java中按照不同字段进行排序
java·开发语言
神仙别闹32 分钟前
基于Java+MySQL实现的医药销售管理系统
java·开发语言·mysql
小九没绝活1 小时前
设计模式-原型模式
java·设计模式·原型模式
时雨h1 小时前
微服务分层架构技术解析:从 API 到数据访问的全方位探秘
java·微服务·dubbo
小咖拉眯1 小时前
蓝桥杯进制问题秒破解法|冲击省一题单(二)
java·数据结构·算法·蓝桥杯
kkk16222452 小时前
C# Winform 实现换肤,并自定义皮肤功能
java·算法·c#
添砖Java中2 小时前
零基础掌握分布式ID生成:从理论到实战的完整指南 [特殊字符]
java·分布式·分布式id
龙仔7252 小时前
打造独一无二的 CI/CD 工厂:Java 应用的自动化之旅
java·spring cloud·ci/cd·自动化·devops