[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

寫在前面:

在前面的博客中寫過流水線發佈Java後端項目,但尚未涉及到容器操做,這一篇就是寫關於流水線發佈docker 鏡像部署過程java

部署環境

主機名 IP地址 部署軟件 內存
harbor 192.168.154.129 docker、docker-compose、harbor 2G
gitlab 192.168.154.131 gitlab 、git、mysql 3G
jenkins 192.168.154.128 jdk、git、jenkins、docker、maven 2G

harbor服務器上部署:

1、搭建harbor倉庫

1.安裝harbor倉庫,上傳tomcat鏡像

參考博客 http://www.javashuo.com/article/p-voxwfupy-nm.htmlnode

2、搭建數據庫MySQL

1.安裝mysql5.7

參考博客 http://www.javashuo.com/article/p-doukgutq-bu.htmlmysql

2.登陸數據庫,受權

mysql -uroot -pMypass@123#!linux

mysql> grant all privileges on *.* to 'root'@'%' identified by 'Mypass@123#!' with grant option; #設置權限
mysql> flush privileges;

2.導入數據

create database quartz
source /etc/quartz.sqlgit

3.查看錶

use quartz;
show tables;web

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

注意:sql

若出現不識別表名或庫名,多是大小寫的問題docker

解決方案:shell

vim /etc/my.cnf數據庫

#忽略大小寫
lower_case_table_names=1

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

重啓數據庫

systemctl restart mysqld

gitlab服務器上部署

搭建gitlab倉庫

1.安裝gitlab倉庫

參考博客 https://blog.51cto.com/13760351/2467477

2.上傳java代碼到gitlab倉庫

參考博客 http://www.javashuo.com/article/p-mqpbotgk-nh.html

Jenkins服務器上部署

1、搭建Jenkins服務器

1.安裝Jenkins服務

參考博客 http://www.javashuo.com/article/p-xrqspael-ho.html

2.安裝maven插件及配置

參考博客 http://www.javashuo.com/article/p-vnfhdrrt-nk.html

3.安裝docker

1.添加docker-ce源

cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.安裝docker

yum -y install docker-ce

3.啓動docker

systemctl start docker

2、編寫流水線腳本

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

1.編寫Jenkinsfile

pipeline {

  agent {
    node {
      label 'master'
    }
  }
    // 拉取代碼
  stages {
    stage('GetCode') {
      steps {
        sleep 5
      }
    }

    // 代碼打包
    stage('Maven Build') {
        steps {
          sh '''
          export JAVA_HOME=/usr/local/java
          /usr/local/apache-maven-3.6.3/bin/mvn clean install -Ptest
          '''
        }
    }

    // 推送到鏡像倉庫
    stage('Push Image') {
      steps {
      sh '''
        REPOSITORY=192.168.154.129/maven-test01/maven-quartz:${branch}
                //建立鏡像
        docker build -t $REPOSITORY .
                //登陸,上傳鏡像到倉庫
        docker login 192.168.154.129 -u admin -p Harbor12345
        docker push $REPOSITORY
        '''
      }
    }

    // 部署到Docker主機
    stage('Deploy to Docker') {
      steps {
        sh '''
                //推送shell腳本到docker主機
        scp images.sh root@harbor:/root/ 
                //遠程執行腳本
        ssh -p 22 root@harbor "chmod +x images.sh && sh /root/images.sh"
        '''
      }
    } 
  }
}

2.編寫Dockerfile

#從harbor拉取鏡像
FROM 192.168.154.129/maven-test01/tomcat:v1
#鏡像構建人信息(可選)
MAINTAINER zhao
#刪除webapps目錄下文件
RUN rm -rf /usr/local/tomcat/webapps/*
#複製打的最新war包到webapps目錄
ADD target/quartz.war /usr/local/tomcat/webapps/

3.編寫鏡像shell腳本

#!/bin/bash
Img=`docker images |grep master |awk -F ' '  '{ print $3}'`
Con=`docker ps |grep :88 |awk -F ' '  '{ print $1}'`
#刪除舊的鏡像
docker stop $Con 
docker rmi -f $Img
#下載新鏡像,運行
docker pull 192.168.154.129/maven-test01/maven-quartz:master
sleep 2
#後臺運行容器
docker run -d -p 88:8080 192.168.154.129/maven-test01/maven-quartz:master

3、新建項目pipline-docker

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目
[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

4、構建測試

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目
[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

5、查看新鏡像

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

舒適提示:

同一標籤的鏡像上傳後,會自動覆蓋以前鏡像,不用特意刪除舊的鏡像!

6、查看容器運行

docker ps

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

7、java項目測試

[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目
[ 企業實戰!] Jenkins+Pipeline+Docker 自動化發佈Java項目

總結

1.這裏其實就是修改了3個腳本文件,前提是在其餘環境都部署好的條件下。
2.爲了不文章篇幅過長,好多步驟,只給了博客連接地址,僅供參考,若是公司已經有環境,能夠不用理會。

  1. 參考文檔 :http://www.javashuo.com/article/p-zyzjprot-he.html
相關文章
相關標籤/搜索