赞
踩
【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建,服务重启,服务发布的功能。一键实现。非常的舒服。
这是 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 =========================="
- ~
上面的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"]
-
Dockerfile 和startup.sh文件是在同一个目录下面
比如都是在这个目录下面: /root/saas/akk-account/
然后下面的jenkins进行配置的时候,需要用到这个 startup.sh的脚本文件, 而startup.sh脚本文件运行的时候依赖Dockerfile文件,就是这样的关系。
jenkins 流水线的配置:
clean package -Dmaven.test.skip=true
进行java 编译打包,生成jar文件
sh /root/saas/akk-account/startup.sh
docker镜像生成, 启动docker服务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。