Docker:Docker搭建Jenkins并共用宿主机Docker部署服务(五)跨服务器远程部署后端微服务多模块

news/2024/12/4 17:39:44/文章来源:https://www.cnblogs.com/nhdlb/p/18586843

前言

继续完成跨服务器远程部署微服务多模块,Jenkins的搭建与插件安装可以观看上一篇文章:https://www.cnblogs.com/nhdlb/p/18561435

配置SSH远程服务器连接

这里需要安装 SSH 连接的插件,可以观看上一篇文章进行安装。

开始配置SSH连接

保存!!

新建视图

方便将整个项目的前端和后端整合起来

新建任务

选择视图

创建项目(任务)

任务配置

项目结构

这里我先介绍下项目结构,方便大家对后续操作的理解

Dockerfile文件内容如下:

FROM openjdk:21
#LABEL authors="zhaoyue"
# 设置构建参数
ARG JARNAME
# 设置构建参数
ARG JARPORT
# 设置构建参数
ARG ACTIVEPRO
# 传值
ENV PRO_ACTIVE=${ACTIVEPRO}
# 映射jar包
COPY ${JARNAME}.jar app.jar
# 端口
EXPOSE ${JARPORT}
# 运行命令
ENTRYPOINT ["java", "-jar", "-Duser.timezone=Asia/Shanghai","-Dfile.encoding=UTF-8", "app.jar", "--spring.profiles.active=${PRO_ACTIVE}"]

docker-compose.yml文件内容如下:

#version: "3.8"
networks:# 共用其他compose的网段higec_net:external: true
services:gateway:image: liv****k-base-gateway:latestcontainer_name: liv****k-gatewayrestart: alwaysports:- 9301:9301networks:higec_net:ipv4_address: 172.19.8.71volumes:- /etc/localtime:/etc/localtime:rocore:image: liv****k-base-core:latestcontainer_name: liv****k-corerestart: alwaysports:- 9304:9304networks:higec_net:ipv4_address: 172.19.8.74volumes:- /etc/localtime:/etc/localtime:rodevice:image: liv****k-base-device:latestcontainer_name: liv****k-devicerestart: alwaysports:- 9303:9303networks:higec_net:ipv4_address: 172.19.8.73volumes:- /etc/localtime:/etc/localtime:rofamily:image: liv****k-base-family:latestcontainer_name: liv****k-familyrestart: alwaysports:- 9305:9305networks:higec_net:ipv4_address: 172.19.8.75volumes:- /etc/localtime:/etc/localtime:rofield:image: liv****k-base-field:latestcontainer_name: liv****k-fieldrestart: alwaysports:- 9307:9307networks:higec_net:ipv4_address: 172.19.8.77volumes:- /etc/localtime:/etc/localtime:ropoultry:image: liv****k-base-poultry:latestcontainer_name: liv****k-poultryrestart: alwaysports:- 9308:9308networks:higec_net:ipv4_address: 172.19.8.78volumes:- /etc/localtime:/etc/localtime:rorecord:image: liv****k-base-record:latestcontainer_name: liv****k-recordrestart: alwaysports:- 9309:9309networks:higec_net:ipv4_address: 172.19.8.79volumes:- /etc/localtime:/etc/localtime:rosystem:image: liv****k-base-system:latestcontainer_name: liv****k-systemrestart: alwaysports:- 9306:9306networks:higec_net:ipv4_address: 172.19.8.76volumes:- /etc/localtime:/etc/localtime:ro

配置参数化构建

这里配置参数的作用是后续shell脚本可以根据参数生成不同镜像和容器

注意:配置构建路径默认的根路径就是GitLab项目的根目录,所以这里的构建路径直接以 base-modules/ 开始

配置项目地址

配置快照和日志信息

配置构建日志名称

自定义命名

引用参数构建命名

配置pom文件用于构建Jar包

# 如果打包所有模块,使用如下命令
clean package -U -Dmaven.test.skip=true# 如果打包指定模块,使用如下命令
clean package -U -pl ${你的参数构建属性名} -am -Dmaven.test.skip=true

打包所有模块

打包指定模块

配置Shell脚本

这里选择 Send files or execute commands over SSH 

重点:这里需要给每个模块创建一个 Send files or execute commands over SSH ,因为 Remove prefix 不支持模糊匹配,所以这里就会麻烦些…………

在最后一个模块 Send files or execute commands over SSH 的 Exec command 写入需要运行的命令。

远程服务器环境

目录结构

当前目录就是文章开头设置的运行jar存储目录,/home/compose/business/

Dockerfile

FROM openjdk:21
#LABEL authors="zhaoyue"
# 设置构建参数
ARG JARNAME
# 设置构建参数
ARG JARPORT
# 设置构建参数
ARG ACTIVEPRO
# 传值
ENV PRO_ACTIVE=${ACTIVEPRO}
# 映射jar包
COPY ${JARNAME}.jar app.jar
# 端口
EXPOSE ${JARPORT}
# 运行命令
ENTRYPOINT ["java", "-jar", "-Duser.timezone=Asia/Shanghai","-Dfile.encoding=UTF-8", "app.jar", "--spring.profiles.active=${PRO_ACTIVE}"]

docker-compose.yml

#version: "3.8"
networks:# 共用其他compose的网段htec_net:external: true
services:gateway:# 这里的镜像名称与容器名称一致,方便管理操作image: portal-gateway:latestcontainer_name: portal-gatewayrestart: alwaysports:- 9601:9601networks:htec_net:ipv4_address: 172.19.8.11volumes:- /etc/localtime:/etc/localtime:rocore:image: portal-core:latestcontainer_name: portal-corerestart: alwaysports:- 9603:9603networks:htec_net:ipv4_address: 172.19.8.13volumes:- /etc/localtime:/etc/localtime:roproject:image: portal-project:latestcontainer_name: portal-projectrestart: alwaysports:- 9604:9604networks:htec_net:ipv4_address: 172.19.8.14volumes:- /etc/localtime:/etc/localtime:rosystem:image: portal-system:latestcontainer_name: portal-systemrestart: alwaysports:- 9606:9606networks:htec_net:ipv4_address: 172.19.8.16volumes:- /etc/localtime:/etc/localtime:ro

jar_build.sh

#!/bin/bash# 定义变量
JAR_PATH="/home/compose/business/"
JAR_NAMES="portal-gateway:9601,portal-core:9603,portal-project:9604,portal-system:9606"# 保存旧的IFS值
OLD_IFS=$IFS
# 设置IFS为逗号
IFS=','# 将字符串分割成数组
echo "########## 读取多选项的值 #####################"
read -ra names <<< "$JAR_NAMES"# 恢复IFS为旧值
IFS=$OLD_IFS# 进入指定目录
cd $JAR_PATH || { echo "Failed to change directory"; exit 1; }echo "########## 停止所有容器 #####################"
# 运行docker-compose清除容器
docker-compose downecho "########## 循环业务模块名称 #####################"
for name in "${names[@]}"; do# 获取头部:名称base_name=$(echo "${name%%:*}" | awk '{$1=$1};1')# 获取名字module_name=${base_name##*-}# 获取尾部:端口号base_port=${name##*:}echo "#----------   $base_name + $base_port"# 获取镜像IDCID_BUSINE=$(docker images | grep "$base_name" | awk '{print $1}')echo "# - - - - -   $CID_BUSINE"if [ -z "$CID_BUSINE" ]; thenecho "空值,不用删除镜像!"else# 删除镜像docker rmi $CID_BUSINEfi# 构建新的镜像docker build -t $base_name:latest --build-arg ACTIVEPRO=portalPlatform_pro --build-arg JARNAME=./base-$module_name --build-arg JARPORT=$base_port .
doneecho "########## 启动项目容器 #####################"
docker-compose up -d
echo "########## 容器运行完成 #####################"

运行构建

远程服务器构建后端容器完成!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846753.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回锅肉做法

‌家常回锅肉是一道经典的四川家常菜,以其色泽黄亮、干香微辣、肥而不腻的特点而广受欢迎。‌制作家常回锅肉的主要材料包括五花肉、蒜苗、姜、蒜、干辣椒、花椒等。五花肉需要先煮熟,然后切成薄片,蒜苗切成段备用。炒制时,先爆香姜蒜片和调料,再加入五花肉片翻炒至出油,…

20222407 2024-2025-1 《网络与系统攻防技术》实验八实验报告

1.学习内容 1.Web前端:负责开发用户所看到的内容。 前端语言:HTML、JavaScript(JS):与Java没有关系,与JSP两回事,CSS。 Web前端框架:Vue.js(中国人尤雨溪)、Bootstrap(Twitter)、Layui(极简单)、Element-UI(基于Vue.js2.0,饿了么)、Angular(Google)…… 2.W…

第四章 决策树

4.1 基本流程 决策过程的最终结论对应了所希望的判定结果。 决策过程中提出的每个判定问题是对某个属性的测试。 一个决策树包含一个根节点,若干个内部节点和若干个叶节点。叶节点对应决策结果。其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被…

hhdb数据库介绍(10-36)

管理 分片方案在线变更 提供对业务表的表类型、分片规则、分片字段、分片所属数据节点四个维度进行在线变更的支持。业务表在变更期间不会锁表,业务可对表进行正常的IUD操作。 分片方案在线变更记录页面显示已执行完成或正在执行的变更任务记录,正在变更的任务允许通过【取消…

智慧车辆算法视频分析服务器渣土车偷拉乱倒识别算法:”智慧城市守卫者“

随着城市化进程的加速,渣土车在建筑、道路等施工领域扮演着至关重要的角色。然而,由于管理和监控手段的不足,渣土车的偷拉乱倒现象日益严重,给城市环境造成了很大影响。针对这一问题,我们来探讨一下视频分析服务器在渣土车偷拉乱倒识别中的应用及相关算法。一、渣土车偷拉…

hhdb数据库介绍(10-33)

管理 数据归档 归档记录查询 功能入口:“管理->数据归档->归档记录查询”需要确保配置的归档用户对数据归档规则所在的逻辑库具备CREATE权限,以及对原数据表具有所有权限。 清理归档数据 (一)功能入口:“管理->数据归档->清理归档数据”清理已归档的数据,但不…

实用free的音频格式转化工具

最近写的博客居然是7年前,今天给小朋友下载歌曲时在网上搜了好多格式转化的方法,挨个尝试了之后发现好多是收费的,或者不支持某种格式转化的,但还是大浪淘沙到一些实用的工具。分享给大家参考,同时也督促自己不断学习。 一、在线格式转换工具Zamzar网址:https://www.zamz…

记录第一次参加开源的流程

记录第一次参加开源贡献开源步骤选择开源项目Fork该开源项目(即拷贝一份代码到自己的远程仓库如gitee或github)在本地使用git将自己远程仓库下的代码clone下来自己本地修改git add . (将修改后的代码添加到缓存区)git commit -m "修改信息" (为此次的修改添加备注)gi…

Bootstrap-table表格组件和jquery版本兼容问题

jquery版本引起的bootstrap-table组件表格未能渲染 最近写一个带分页的页面,使用了bootstrap-table组件,表格数据怎么都渲染不出来,控制台打印出了下面的信息:一时有点懵,确认js代码及bootstrap-table用法没有任何问题后,将数据放入以前可正确渲染的页面中,表格正常渲染…

Vulnhub Connect-The-Dots

0x01:端口扫描 主机发现 nmap -sn 192.168.231.0/24全端口扫描 nmap --min-rate 10000 -p- 192.168.231.144开放21ftp,80http,111rpcbind,2049nfsrpcbind 主要的作用是将网络上的 RPC 服务与其对应的端口进行关联。它充当了客户端和服务器之间的桥梁,使得客户端可以通过服…

办公自动化处理展示

1、自动绘制地质图2、自动出高速公路路面自检资料3、自动出高速公路路基自检资料4、自动出高速公路T梁预制自检资料5、自动出高速公路桩基资料自检资料6、自动出高速垫石自检资料7、自动化操作网页8、CAD编程提取点坐标9、扫描的PDF自动识别文字或表格10、pdf文件自动拆分并命名…