docker+jenkins实现spring boot项目持续集成自动化部署

 

 

一.首先jenkins与docker的安装参考下面链接
 
 
 
二.Jenkins配置
 
1.打开jenkins构建一个maven项目,名字取为ms_backend.
 

 

2.填写jenkins配置

 

 

 

 

 

以上jenkins配置就完成了。
 
三.对docker的配置(重点,因为我把所有的配置都放在docker.sh中,也是出于安全的考虑)
 
1.进入云服务器中到项目的目录下即 /usr/ms_backend
 
2.在该目录下创建并编写Dockerfile文件
 1 [root@iZuf635fwy8k6ubk6r9yonZ ms_backend]# vim Dockerfile 
 2 
 3 FROM hub.c.163.com/wuxukun/maven-aliyun:3-jdk-8      //下载maven与java的镜像
 4 # 指定当前操作目录
 5 WORKDIR /usr/ms_backend                                           
 6 #指定对外端口号
 7 EXPOSE 8040          
 8 #启动java程序
 9 #--spring.profiles.active=dev 多环境下指定环境 。 -c为清除以前启动的数据
10 ENTRYPOINT ["java","-jar","ms_backend.jar","--spring.profiles.active=dev","-c"]
3.创建配置docker.sh脚本
 
先看下jenkins构建后项目存放的路径,以便在docker.sh中用到

 

 1 [root@iZuf635fwy8k6ubk6r9yonZ ms_backend]# vim docker.sh 
 2 #操作/项目路径(Dockerfile存放的路劲)
 3 BASE_PATH=/usr/ms_backend
 4 # 源jar路径  即jenkins构建后存放的路径(
 5 
 6  7 SOURCE_PATH=/var/lib/jenkins/workspace
 8 #docker 镜像/容器名字或者jar名字 这里都命名为这个
 9 SERVER_NAME=ms_backend
10 #容器id
11 CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
12 #镜像id
13 IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
14 
15 echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/ms_backend.jar 迁移至 $BASE_PATH ...."
16 #把项目从jenkins构建后的目录移动到我们的项目目录下同时重命名下
17  mv $SOURCE_PATH/$SERVER_NAME/target/ms_backend-0.0.1-SNAPSHOT.jar $BASE_PATH/ms_backend.jar
18 #修改文件的权限
19  chmod 777 /usr/ms_backend/ms_backend.jar
20  echo "迁移完成"
21 
22 
23 # 构建docker镜像
24         if [ -n "$IID" ]; then
25                 echo "存在$SERVER_NAME镜像,IID=$IID"
26         else
27                 echo "不存在$SERVER_NAME镜像,开始构建镜像"
28                         cd $BASE_PATH
29                 docker build -t $SERVER_NAME .
30         fi
31 
32 # 运行docker容器 33 docker rm $SERVER_NAME //删除原来的容器 34 # --name docker-test 容器的名字为docker-test 35 # -d 容器后台运行 36 # -p 3636:3636 指定容器映射的端口和主机对应的端口都为3636 37 # -v /usr/ms_backend/:/usr/ms_backend/ 将主机的/usr/ms_backend/目录挂载到容器的/usr/ms_backend/ 目录中(不可少每次本地更新jar包重启容器即可,不用重新构建镜像 38 docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8040:8040 $SERVER_NAME 39 echo "$SERVER_NAME容器创建完成"
以上配置全部完成
 
四.构建的过程可能出现的问题
 
1.jenkins 启动 docker /usr/bin/docker-current: Got permission denied while trying to connect to the Docker daemon socket at
答:权限问题 。 需要把jenkins用户加入到dockerroot组中
 
2.containerd: start container” error=“oci runtime error: container_linux.go:247: starting container process caused “process_linux.go:245: running exec setns process for init caused \“exit status 17\””\n”
答:这个问题是因为linux内核版本的问题,运行dockerlinux内核版本应在3.10以上。所以需要升级linux内核
 
3.docker . Unable to access jarfile问题
需要在Dockerfile中指定目录
 
4.spring boot多环境配置方法

 

5.如果docker run 容器运行成功后立马意外退出exit(1)
可以通过docker logs 容器名称 。 查看日志,分析原因。

 

 

posted @ 2019-02-26 14:58  低调的小白  阅读(19382)  评论(0编辑  收藏  举报