Jenkins+docker自动化部署管理springBoot项目

* 服务器环境支持 Jenkins服务+Git+Maven+Docker

1.打开jenkins构建一个maven项目,名字取为maven-test

Jenkins+docker自动化部署管理springBoot项目_第1张图片

2.填写jenkins配置

Jenkins+docker自动化部署管理springBoot项目_第2张图片

3.立即构建

Jenkins+docker自动化部署管理springBoot项目_第3张图片


    到此jenkins构建成功 我们可以拿到项目构建的最新jar包(/root/.jenkins/workspace/docker-test/target/docke-test.jar),接下来就要考虑怎么把jar包自动化部署到docker容器中。

4.编写Dockerfile文件

在项目操作的路径(/work/project)下创建Dockerfile文件


编辑Dockerfile文件内容为


     
     
     
     
  1. #基于openjdk: 8
  2. FROM openjdk: 8
  3. # 指定当前操作目录
  4. WORKDIR /work/project
  5. #容器启动后执行的操作
  6. CMD java -jar docker-test.jar

5.编写jenkins中打包成功后执行的shell脚本

打开jenkins中的配置选择 Pre Steps  - Add post-build step - 执行shell

Jenkins+docker自动化部署管理springBoot项目_第4张图片

 脚本值设置为


     
     
     
     
  1. #操作/项目路径(Dockerfile存放的路劲)
  2. BASE_PATH=/work/project
  3. # 源jar路径
  4. SOURCE_PATH=/root/.jenkins/workspace
  5. #docker 镜像/容器名字或者jar名字 这里都命名为这个
  6. SERVER_NAME=docker-test
  7. #容器id
  8. CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
  9. #镜像id
  10. IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
  11. DATE=`date +%Y%m%d%H%M`
  12. # 最新构建代码 移动到项目环境
  13. function transfer(){
  14. echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar 迁移至 $BASE_PATH ...."
  15. cp $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar $BASE_PATH
  16. echo "迁移完成"
  17. }
  18. # 备份
  19. function backup(){
  20. if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
  21. echo "$SERVER_NAME.jar 备份..."
  22. cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
  23. echo "备份 $SERVER_NAME.jar 完成"
  24. else
  25. echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
  26. fi
  27. }
  28. # 构建docker镜像
  29. function build(){
  30. if [ -n "$IID" ]; then
  31. echo "存在$SERVER_NAME镜像,IID=$IID"
  32. else
  33. echo "不存在$SERVER_NAME镜像,开始构建镜像"
  34. cd $BASE_PATH
  35. docker build -t $SERVER_NAME .
  36. fi
  37. }
  38. # 运行docker容器
  39. function run(){
  40. backup
  41. transfer
  42. build
  43. if [ -n "$CID" ]; then
  44. echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."
  45. docker restart $SERVER_NAME
  46. echo "$SERVER_NAME容器重启完成"
  47. else
  48. echo "不存在$SERVER_NAME容器,docker run创建容器..."
  49. docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 3636: 3636 $SERVER_NAME
  50. echo "$SERVER_NAME容器创建完成"
  51. fi
  52. }
  53. #入口
  54. run

这段shell脚本大致流程 

a.备份(/work/project)下jar包

cp /work/project/docker-test.jar /work/project/backup/docker-test-201805171416.jar
     
     
     
     

b.项目构建的最新jar包(/root/.jenkins/workspace/docker-test/target/docke-test.jar)移动到项目操作的路径(/work/project)

cp /root/.jenkins/workspace/docker-test/target/docker-test.jar /work/project
     
     
     
     

c.判断docker镜像是否存在,不存在则进入Dockerfile存放的路径(/work/project)执行docker build操作构建名字为docker-test镜像


     
     
     
     
  1. cd /work/project
  2. docker build -t docker-test .

d.判断docker容器是否存在,不存在则执行docker run命令创建容器,存在则docker restart重启容器


     
     
     
     
  1. docker run --name docker-test -v /work/project/:/work/project/ -d -p 3636: 3636 docker-test
  2. docker restart docker-test

docker run参数


     
     
     
     
  1. --name docker-test 容器的名字为docker-test
  2. -d 容器后台运行
  3. -p 3636:3636 指定容器映射的端口和主机对应的端口都为3636
  4. -v /work/project/:/work/project/ 将主机的/work/project/目录挂载到容器的/work/project/ 目录中(不可少每次本地更新jar包重启容器即可,不用重新构建镜像)

6.效果检测

上步操作脚本写好保存后 点击立即构建查看日志如下图代表项目自动化打包构建成功

Jenkins+docker自动化部署管理springBoot项目_第5张图片

查看镜像

Jenkins+docker自动化部署管理springBoot项目_第6张图片

查看容器

Jenkins+docker自动化部署管理springBoot项目_第7张图片

访问项目

   

编辑接口返回值,提交代码

Jenkins+docker自动化部署管理springBoot项目_第8张图片

点击立即构建,构建成功访问项目

Jenkins+docker自动化部署管理springBoot项目_第9张图片


    可以发现项目修改重新自动部署成功~~~

你可能感兴趣的:(csdn转载,linux)