【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建的功能

【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建,服务重启,服务发布的功能。一键实现。非常的舒服。

1. 启动脚本 shell脚本

这是 shell脚本

startup.sh

本脚本的功能是在jenkins 构建完项目后,通过jar包生成docker 镜像,然后重新服务的功能。

demo-test是 服务名字

bash 复制代码
##  startup.sh  
## 本脚本的功能是在jenkins 构建完项目后,通过jar包生成docker 镜像,然后重新服务的功能。
## demo-test是 服务名字

#!/bin/sh
echo "==================== start restart docker containers ====================="

APP_DIR=/root/saas/demo-test

APP_NAME=demo-test

APP_PORT=7080

VERSION=1.0.0-SNAPSHOT
 
cd $APP_DIR

rm -f demo-test-${VERSION}.jar
cp /data/jenkins/workspace/demo-test/target/demo-test-${VERSION}.jar ./
sleep 3s 

## 检查进程是否存在
PID=$(docker ps -a --filter name=$APP_NAME| grep -v "grep"|awk '{print $2}'|awk 'NR==2')
if [ "$PID" == "" ]; then
        echo "应用:$APP_NAME  容器不存在。"
else
        echo "应用:$APP_NAME  存在容器:$PID"
        
        docker stop  $PID
        docker rm $PID
        echo "容器:$PID 停止成功。"
        
        docker rmi $PID
        echo "镜像:$PID 停止成功。"
fi

echo "应用:$APP_NAME  正在启动..."

docker build -t $APP_NAME .
docker run -m 4g --name $APP_NAME -d -p $APP_PORT:$APP_PORT -v /etc/localtime:/etc/localtime -v /data/logs/saas/demo-test/logs:/root/saas/demo-test/logs --network host $APP_NAME 
echo "应用启动命令已执行,稍候请检查服务是否可用。"

echo "==================== end restart docker containers =========================="
~

2. jenkins 任务的创建

jenkins 流水线的配置:

相关推荐
帝国辉耀18 小时前
docker、docker daemon、k8s、dockershim、containerd之间的关系
docker·容器·kubernetes
明明跟你说过8 小时前
【k8s】资源限制管理:Namespace、Deployment与Pod的实践
运维·docker·云原生·容器·kubernetes·k8s
奋豆来袭9 小时前
wins中怎么用一个bat文件启动jar包和tomcat等多个服务
jar
2301_7943339110 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
JCGKS11 小时前
Docker|“ssh: connect to host xxx.xxx.xxx.xxx port 8000: Connection refused“问题解决
docker·ssh·端口·listen·tcp三次握手
惜.己12 小时前
Docker启动失败 Failed to start Docker Application Container Engine.
spring cloud·docker·eureka
苦逼IT运维12 小时前
Jenkins 监控方案:Prometheus + Grafana 实践
jenkins·grafana·prometheus
scugxl12 小时前
centos7 docker离线安装
运维·docker·容器
一念一花一世界13 小时前
DevOps实战(3) - 使用Arbess+GitLab+Hadess实现Java项目自动化部署
gitlab·jenkins·tiklab·arbess·开源cicd工具
计算机小手14 小时前
AI 驱动数据分析:开源 SQLBot 项目探索,基于大模型和 RAG 实现精准问数与图表挖掘
经验分享·docker·开源软件