IT必备技能

jenkins+springboot+docker CI

2019-08-04  本文已影响0人  刘凯_7013

jenkins+springboot+docker 的可持续集成简易方案。

参考以下文章

jenkins+gitlab测试环境自动化部署
jenkins持续集成的步骤

安装docker 用来安装机器

搭建docker 私服
docker register私服

springboot项目docker化
springboot如何生成docker镜像

下面介绍如何利用jenkins部署springboot的docker容器

首先准备如下几步

  1. 安装docker 用来在目标机和jenkins上安装机器

2.搭建docker 私服 搭建 docker register私服

3.springboot项目docker化 springboot配置生成docker镜像

  1. jenkins+gitlab测试环境自动化部署

第四步完成后,在构建步骤里添加如下脚本

  1. mvn package clean docker:build 命令打包docker文件到本地

  2. docker push 命令将打包好的镜像推送到register

  3. ssh到目标机 使用docker pull命令更新镜像,

4 使用docker stop命令停掉目标机服务,docker rm命令删除旧镜像(注意,此处要删除是因为都用的一个版本,可以每次打不同版本的镜像也可以)

  1. 使用docker run 命令启动容器
HOST_FILE=/data/code/scripts/hosts/****hosts
REMOTE_USER=git

ACTIVE_PROFILE=prod

MAVEN_OPTS="clean package -P${ACTIVE_PROFILE} -Dapi.version=${BRANCH} -Dmaven.test.skip=true docker:build"
PROJECT=projectName
DOCKER_IMAGE=docker.registry.XXX.com:5000/groupid/projectName

#https://yq.aliyun.com/ziliao/60417

OLD_BUILD_ID=$BUILD_ID
BUILD_ID=dontKillMe


SERVESR=($(awk '{print $1}' $HOST_FILE))

WS=`pwd`

function print_env() {
    echo "MAVEN_OPTS:${MAVEN_OPTS}"
    echo "ACTIVE_PROFILE:${ACTIVE_PROFILE}"
    echo "OLD_BUILD_ID:${OLD_BUILD_ID}"
    echo "BUILD_ID:${BUILD_ID}"
}



function build() {

    echo "Building ..."
    mvn ${MAVEN_OPTS}
    echo "Building finished."
    echo "Pushing to registry ..."
    docker push ${DOCKER_IMAGE}
    echo "Pushed to registry ..."
    

}

function install() {
    
    
    
   echo "Dispacthing package to servers..."
   
   for dest_server in ${SERVESR[@]}
   do
       echo "Dispacthing package to ${dest_server}"
       
       ssh ${REMOTE_USER}@${dest_server} "
       
         echo "Installing ${PROJECT} from docker registry "
    
         sudo docker pull ${DOCKER_IMAGE}
         
         mkdir -p /home/log/projectName
        
         echo "Installed ${PROJECT} from docker registry "
       
      "       
   
   done 
   
}

function restart() {
 for dest_server in ${SERVESR[@]}
   do
    ssh ${REMOTE_USER}@${dest_server} "     
        sudo docker stop ${PROJECT}
        sudo docker rm ${PROJECT}
        sudo docker run -d  -p 9189:9189 -it -v /home/log/projectName:/home/log/projectName --restart=always --name ${PROJECT} docker.registry..com:5000/groupid/projectName
    "       
 done
}

function main() {

    if [ "true" == "${ONLY_RESTART}" ]; then 
        restart
    else
        print_env &&
        build   &&
        install &&
        restart
    fi
    
}

main 
上一篇下一篇

猜你喜欢

热点阅读