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

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

1. 启动脚本 shell脚本

这是 shell脚本 

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

脚本目录地址: /root/saas/akk-account/startup.sh
 

##  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. Dockerfile文件

上面的shell脚本在执行 docker build命令的时候,需要一个 Dockerfile文件,Dockerfile文件内容:

FROM openjdk:8

MAINTAINER "维护者 <email>"
RUN echo "Asia/Shanghai" > /etc/timezone

LABEL description="demo-test"
ADD demo-test-1.0.0-SNAPSHOT.jar demo-test.jar
EXPOSE 7080
ENTRYPOINT ["java","-XX:+UseContainerSupport","-XX:MaxRAMPercentage=75.0","-server","-XX:+UseG1GC","-XX:MaxGCPauseMillis=200","-Xmx1024m","-Xms1024m","-Xmn384m","-jar","-Dspring.profiles.active=dev","demo-test.jar"]

3. 文件目录关系

Dockerfile 和startup.sh文件是在同一个目录下面

比如都是在这个目录下面:  /root/saas/akk-account/

然后下面的jenkins进行配置的时候,需要用到这个 startup.sh的脚本文件, 而startup.sh脚本文件运行的时候依赖Dockerfile文件,就是这样的关系。

4. jenkins 任务的创建

jenkins 流水线的配置:

 

clean package -Dmaven.test.skip=true 

        进行java 编译打包,生成jar文件

sh /root/saas/akk-account/startup.sh
        docker镜像生成, 启动docker服务

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值