• 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”” ”
    答:这个问题是因为linux内核版本的问题,运行dockerlinux内核版本应在3.10以上。所以需要升级linux内核
     
    3.docker . Unable to access jarfile问题
    需要在Dockerfile中指定目录
     
    4.spring boot多环境配置方法
    5.如果docker run 容器运行成功后立马意外退出exit(1)
    可以通过docker logs 容器名称 。 查看日志,分析原因。

     

     

  • 相关阅读:
    debug: if (va=1) 和 if (va==1)的区别
    必定管用!关于如何在电脑上恢复itunes中的音乐库(Mac Windows统统适用)
    关于Matlab中自动生成的asv文件
    LaTeX表格字体大小控制
    ANSYS中应力强度因子与J积分的计算
    Notepad++取消输入单词时出现提示
    notepad++的apdl高亮xml文件
    Power Graphics
    19个必须知道的Visual Studio快捷键
    APDL命令流:将ansys分析结果输出为tecplot格式
  • 原文地址:https://www.cnblogs.com/wang-yaz/p/10437377.html
Copyright © 2020-2023  润新知