在前面的博客中寫過流水線發佈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 |
參考博客 http://www.javashuo.com/article/p-doukgutq-bu.htmlmysql
mysql -uroot -pMypass@123#!linux
mysql> grant all privileges on *.* to 'root'@'%' identified by 'Mypass@123#!' with grant option; #設置權限 mysql> flush privileges;
create database quartz
source /etc/quartz.sqlgit
use quartz;
show tables;web
注意:sql
若出現不識別表名或庫名,多是大小寫的問題docker
解決方案:shell
vim /etc/my.cnf數據庫
#忽略大小寫 lower_case_table_names=1
systemctl restart mysqld
cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl start docker
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" ''' } } } }
#從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/
#!/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
舒適提示:
同一標籤的鏡像上傳後,會自動覆蓋以前鏡像,不用特意刪除舊的鏡像!
docker ps
1.這裏其實就是修改了3個腳本文件,前提是在其餘環境都部署好的條件下。
2.爲了不文章篇幅過長,好多步驟,只給了博客連接地址,僅供參考,若是公司已經有環境,能夠不用理會。