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

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

时间:2024-12-04 17:43:04浏览次数:8  
标签:部署 宿主机 jar etc portal 模块 构建 Docker localtime

前言

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

配置SSH远程服务器连接

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

开始配置SSH连接

保存!!

新建视图

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

新建任务

选择视图

创建项目(任务)

任务配置

项目结构

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

配置参数化构建

这里配置参数的作用是后续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:latest
    container_name: portal-gateway
    restart: always
    ports:
      - 9601:9601
    networks:
      htec_net:
        ipv4_address: 172.19.8.11
    volumes:
      - /etc/localtime:/etc/localtime:ro

  core:
    image: portal-core:latest
    container_name: portal-core
    restart: always
    ports:
      - 9603:9603
    networks:
      htec_net:
        ipv4_address: 172.19.8.13
    volumes:
      - /etc/localtime:/etc/localtime:ro

  project:
    image: portal-project:latest
    container_name: portal-project
    restart: always
    ports:
      - 9604:9604
    networks:
      htec_net:
        ipv4_address: 172.19.8.14
    volumes:
      - /etc/localtime:/etc/localtime:ro

  system:
    image: portal-system:latest
    container_name: portal-system
    restart: always
    ports:
      - 9606:9606
    networks:
      htec_net:
        ipv4_address: 172.19.8.16
    volumes:
      - /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 down

echo "########## 循环业务模块名称 #####################"
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"
    # 获取镜像ID
    CID_BUSINE=$(docker images | grep "$base_name" | awk '{print $1}')
    echo "# - - - - -   $CID_BUSINE"
    if [ -z "$CID_BUSINE" ]; then
        echo "空值,不用删除镜像!"
    else
        # 删除镜像
        docker rmi $CID_BUSINE
    fi
    # 构建新的镜像
    docker build -t $base_name:latest --build-arg ACTIVEPRO=portalPlatform_pro --build-arg JARNAME=./base-$module_name --build-arg JARPORT=$base_port .
done

echo "########## 启动项目容器 #####################"
docker-compose up -d
echo "########## 容器运行完成 #####################"

运行构建

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

标签:部署,宿主机,jar,etc,portal,模块,构建,Docker,localtime
From: https://www.cnblogs.com/nhdlb/p/18586843

相关文章

  • centos7+docker dock-compose使用
    简介Docker-Compose是Docker官方的开源项目,用于实现Docker容器集群的快速编排。Compose简介Compose是用于定义和运行多容器Docker应用程序的工具,通过Compose,可以使用YML文件来配置应用程序所需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。Comp......
  • ssm毕设智慧停车系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着城市化进程的加速,汽车保有量不断攀升,停车难成为城市发展面临的重大挑战之一。传统的停车管理方式存在诸多弊端,例如车主寻找车位困难,尤其是在......
  • ssm毕设学生日常管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着教育事业的不断发展,学校规模不断扩大,学生数量日益增多,传统的学生管理方式面临着诸多挑战。在过去,学生管理多依赖人工操作,例如学生信息的记录......
  • 无法科学上网导致docker compose up -d报错,已解决
    MilvusMilvus是一款开源的向量数据库,具有高度的灵活性、稳定可靠性以及高速查询等特点。它支持针对TB级向量的增删改操作和近实时查询,适用于大规模向量数据的存储和检索。Milvus的官网:https://milvus.ioGithub上Milvus的链接:https://github.com/milvus-ioDockerDocker是......
  • 威联通-002 Docker镜像下载
    @目录前言操作大纲1.登录阿里云镜像服务2.创建个人容器3.GitHub复制代码到本地库、配置信息4.点击修改自己想要拉取的镜像5.进入阿里云查看6.创建容器参考(可用)前言由于国内几乎所有的docker库的封锁,现在不能进行docker镜像的拉取操作,尝试很多种方法都失败了,最后总结一个自己觉......
  • 使用Docker打造Linux老系统的编译工具链
    由于GLIBC及C++运行时库的问题,在新的Ubuntu下编译的软件,拿到老系统上,是往往会运行出错的,而老系统编译出来的软件,则通常能够被新系统兼容因此准备弄一个老系统下的容器,专门用来编译一些软件,这里ubuntu使用16.04版本。参考自网络上搜索得到的信息,准备三个文件,分别是Dockerfile/ru......
  • 如何打包部署vue2脚手架编写的项目
    如果你需要将Vue2项目打包,并且指定上下文路径(publicPath)为'film',你可以在项目的vue.config.js文件中进行配置。以下是如何设置的步骤:创建或修改vue.config.js文件:在项目的根目录下创建或修改vue.config.js文件,并添加以下内容:module.exports={publicPath:'/film......
  • docker 总结
    Docker:是一个发布应用程序的技术Docker的核心镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。镜像就是磁盘上的文件包含完整运行环境,可以在任意Linux操作系统上运行参考:Docker镜像操作-一杯水M-博客园Dockerfile:将jar文件构......
  • Kubernetes 集群部署 Prometheus 和 Grafana
    实验环境节点名称IP地址master01192.168.88.10node01192.168.88.20node02192.168.88.30一、node-exporter安装1、创建监控namespacekubectlcreatensmonitor-sa2、部署node-exportermkdir/opt/prometheuscd/opt/prometheus/vimnode-export.yaml---apiVersion......
  • AI一键部署本地“妙鸭”,证件照,写真照,模特换装全部搞定!
    去年年初,一款很火的AI写真软件“妙鸭”横空出世,消费者仅仅只需几张照片就能给自己拍摄出各式各样的证件照、写真照,简直太神奇了。而现在,一款叫做EasyPhoto的插件也出现在了sd上,我们可以利用它,轻松完成一套自己的写真集了。01.一键部署启动加载扩展列表,安装“easyphoto”......