docker+gitlab+jenkins從零搭建自動化部署
前言:
通過幾天的學習和自己的理解,整理瞭下Docker+Jenkins的自動部署教程,如有不足,還請多多指點,謝謝!
Docker的優點:
Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux機器上,便可以實現虛擬化。Docker改變瞭虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是Docker的最大優勢,過去需要用數天乃至數周的 任務,在Docker容器的處理下,隻需要數秒就能完成。
結構:客戶端→Docker_Host(宿主機)→倉庫
三個概念 容器→鏡像→倉庫
為什麼使用Jenkins:
傳統的部署項目,當項目完成後,需要我們自己從代碼倉庫中拉取代碼到本地,完成打包,然後上傳到服務器,然後配置項目的運行環境並啟動。這樣顯然有一點的缺陷,我們在開發中存在的一些bug由於不能即時的發現,導致後期修復bug而存在導致連鎖效應的風險。而且我們經常修改代碼後,需要重新打包,然後上傳到服務器,然後運行,當項目很多的時候,這樣的一些重復性機械操作導致我們有些力不從心。
而我們使用Jenkins後真正的幫我們實現瞭自動化部署,當我們代碼更新後,push到代碼倉庫中,我們隻需在Jenkins的可視化界面點擊構建項目,Jenkins便會根據我們配置的倉庫地址自動拉取代碼,自動打包,並運行,完成自動化部署。
一、安裝Docker
Docker 要求 CentOS 系統的內核版本在 3.10以上 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker。
1. 通過 uname -r 命令查看你當前的內核版本
uname -r
2. 使用 root 權限登錄 Centos。確保 yum 包更新到最新。
yum -y update
3. 卸載舊版本(如果安裝過舊版本的話)
yum remove docker docker-common docker-selinux docker-engine
4. 安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
5. 設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6. 可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r
7. 安裝docker
sudo yum install -y docker-ce #由於repo中默認隻開啟stable倉庫,故這裡安裝的是最新穩定版18.03.1
8. 啟動並加入開機啟動
systemctl start docker //啟動docker systemctl enable docker //設置為開機啟動
9. 驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功瞭)
docker version
二、Docker 安裝Jenkins
1. 搜索倉庫中的jenkins鏡像
docker search jenkins
jenkins 表示你要搜索的鏡像名,DESCRIPTION中包含jenkins的也會顯示出來
2. 通過拉取jenkins鏡像到本地images中
docker pull jenkins/jenkins
註意這裡拉取的是jenkins/jenkins版本,因為先前的jenkins版本隻有2.60,導致安裝jenkins插件失敗拉取的時候可以指定版本,例如docker pull java:8 表示拉取的java版本為8; 不指定版本則默認為最新版本 latest
3. 啟動jenkins容器
docker run --name myjenkins -d -p 8081:8080 -p 8085:8085 jenkins/jenkins
–name myjenkins 指定容器NAME為myjenkins
-d 表示後臺運行
-p 8081:8080 表示Docker Host(運行Docker的主機)端口 與Docker容器內運行的端口映射,
8081表示DockerHost的端口,8080即容器內的端口; 外部訪問8081即可訪問到Docker容器的8080端口
jenkins/jenkins 表示啟動的鏡像為jenkins/jenkins ,查看本地鏡像可以通過docker images查看
說明:
1.容器內的端口外部無法直接訪問,因為要配置Docker Host與容器的端口映射,映射可以配置多個;
由於後面需要部署項目,提前把項目的端口號-p 8085:8085配置好,不配置的也可以,後面去修端口映射文件即可。
2.其實我們也可以省略第二步pull操作,直接啟動一個容器,Docker會先去本地images中查看是否有這個鏡像,如果沒有的話會去DockerHub倉庫去下載。
三、登陸Jenkins的初始化操作
1. 訪問jenkins界面,例如我虛擬機IP是192.168.199.188 ,輸入192.168.199.188:8081,回車顯示以下界面
進入安裝Jenkins的容器內
docker exec -it myjenkins bash // 進入指定容器,myjenkins表示我們啟動容器時給容器指定的名稱 cat /var/jenkins_home/secrets/initialAdminPassword` //查看密碼,復制密碼粘貼到文本框內
操作圖示:
2. 安裝插件,這裡就安裝jenkins推薦的插件
點擊安裝推薦插件:
3. 自動安裝中,需要稍等片刻,安裝完成點擊繼續:
4. 創建管理員用戶,也可以直接使用admin賬戶繼續:
5. 實例配置 直接保存完成:
6. 開始使用Jenkins:
7. 進入Jenkins主頁:
四、全局工具配置(配置環境)
點擊系統管理–全局工具配置
1. 配置JDK: 取消自動安裝(一般容器內都安裝好瞭JDK環境), 進入docker容器,使用echo $JAVA_HOME
獲取jdk安裝路徑,將路徑復制到JAVA_HOME文本框
2. 配置Maven: 指定name,自動安裝,點擊Save即可
五、安裝Maven插件 點擊系統管理–插件管理
六、新建任務,完成自動化部署
1. 回到首頁,點New 任務,構建一個Maven項目
2. 點擊確定,回到首頁我們發現多瞭一個名為SpringBoot_AutoTest1的任務(上面的任務是以前的,不用理會)
3. 點擊項目名SpringBoot_AutoTest1 –> 點擊配置
3.1 源碼管理(配置git倉庫地址,Jenkins會從遠程倉庫拉取代碼):
3.2 構建配置(Jenkin拉取代碼後會自動執行打包命令):
3.3 配置shell腳本(Jenkins打包完成後,自動執行shell腳本啟動項目,實現自動化部署),最後保存即可:
附shell腳本:
#!/bin/bash # #!/bin/bash是指此腳本使用/bin/bash來解釋執行。其中,#!是一個特殊的表示符,其後,跟著解釋此腳本的shell路徑。bash隻是shell的一種,還有很多其它shell,如:sh,csh,ksh,tcsh,... # #!/bin/bash隻能放在第一行,如果後面還有#!,那麼隻能看成是註釋。 #服務名稱 SERVER_NAME=SpringBoot_AutotTest #源jar路徑,mm打包完成之後,target目錄下的jar包名稱,也可選擇成為war包,war包 可移動到Tomcat的。 JAR_NAME=jekins-0.0.1-SNAPSHOT #target打包生成jar包的目錄 JAR_PATH=/var/jenkins_home/workspace/SpringBoot_AutotTest/target # 以具體的打包位置為準,可以先構建一次項目,通過日志查看打包的目錄 #打包完成之後,把iar包移動到運行jar包的目錄 JAR_WORK_PATH=/var/jenkins_home/workspace/SpringBoot_AutotTest/target echo "查詢進程id-->$SERVER_NAME" PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'` echo"得到進程ID: $PID" echo"結束進程" for id in $PID do kill -9 $id echo "killed $id" done echo"結束進程完成" #復制jar包到執行目錄_ echo" 復制jar包到執行目錄:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH" cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH echo"復 制jar包完成" cd $JAR_WORK_PATH #修改文件權限 chmod 755 $JAR_NAME.jar #前臺啟動 #java -jar $JAR_NAME.jar #後臺啟動 BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
到此這篇關於docker+gitlab+jenkins從零搭建自動化部署的文章就介紹到這瞭,更多相關docker+gitlab+jenkins自動化部署內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Linux環境下使用Docker搭建Jenkins容器的方法步驟
- 解決Jenkins集成docker插件問題的一些方法
- Jenkins一鍵打包部署SpringBoot應用的方法步驟
- 關於Jenkins + Docker + ASP.NET Core自動化部署的問題(避免踩坑)
- docker部署安裝jenkins的實現步驟