天天看點

Jenkins+Docker 實作一鍵自動化部署項目!

作者:大資料與人工智能分享

本文章實作最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。

環境:centos7+git(gitee)

簡述實作步驟:在docker安裝jenkins,配置jenkins基本資訊,利用Dockerfile和shell腳本實作項目自動拉取打包并運作。

安裝docker

docker 安裝社群版本CE

確定 yum 包更新到最新。

yum update
           

解除安裝舊版本(如果安裝過舊版本的話)

yum remove docker  docker-common docker-selinux docker-engine
           

安裝需要的軟體包

yum install -y yum-utils device-mapper-persistent-data lvm2
           

設定yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
           

安裝docker

yum install docker-ce  #由于repo中預設隻開啟stable倉庫,故這裡安裝的是最新穩定版17.12.0
yum install <自己的版本>  # 例如:sudo yum install docker-ce-17.12.0.ce
           

啟動和開機啟動

systemctl start docker
systemctl enable docker
           

驗證安裝是否成功

docker version
           

安裝Jenkins

Jenkins中文官網:https://www.jenkins.io/zh/

安裝J enkins

docker 安裝一切都是那麼簡單,注意檢查8080是否已經占用!如果占用修改端口

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
           

如果沒改端口号的話

安裝完成後通路位址-> http://{部署Jenkins所在服務IP}:8080

此處會有幾分鐘的等待時間。

初始化 Jenkins

詳情見官網教程->https://www.jenkins.io

解鎖 Jenkins

進入Jenkins容器:docker exec -it {Jenkins容器名} bash

例如 docker exec -it jenkins bash

檢視密碼:cat /var/lib/jenkins/secrets/initialAdminPassword

複制密碼到輸入框裡面

Jenkins+Docker 實作一鍵自動化部署項目!

安裝插件

選擇第一個:安裝推薦的插件

Jenkins+Docker 實作一鍵自動化部署項目!

建立管理者使用者

此賬戶一定要記住哦

系統配置

安裝需要插件

進入【首頁】–【系統管理】–【插件管理】–【可選插件】

搜尋以下需要安裝的插件,點選安裝即可。

Jenkins+Docker 實作一鍵自動化部署項目!
  • 安裝Maven Integration
  • 安裝Publish Over SSH(如果不需要遠端推送,不用安裝)
  • 如果使用Gitee 碼雲,安裝插件Gitee(Git自帶不用安裝)

配置Maven

進入【首頁】–【系統管理】–【全局配置】,拉到最下面maven–maven安裝

Jenkins+Docker 實作一鍵自動化部署項目!

建立任務

建立任務

點選【建立任務】,輸入任務名稱,點選建構一個自由風格的軟體項目

Jenkins+Docker 實作一鍵自動化部署項目!

源碼管理

點選【源碼管理】–【Git】,輸入倉庫位址,添加憑證,選擇好憑證即可。

Jenkins+Docker 實作一鍵自動化部署項目!
Jenkins+Docker 實作一鍵自動化部署項目!

建構觸發器

點選【建構觸發器】–【建構】–【增加建構步驟】–【調用頂層Maven目标】–【填寫配置】–【儲存】

Jenkins+Docker 實作一鍵自動化部署項目!

此處指令隻是install,看是否能生成jar包

clean install -Dmaven.test.skip=true
           
Jenkins+Docker 實作一鍵自動化部署項目!

儲存

點選【儲存】按鈕即可

測試

該功能測試是否能正常打包

建構

點選建構按鈕

Jenkins+Docker 實作一鍵自動化部署項目!

檢視日志

點選正在建構的任務,或者點選任務名稱,進入詳情頁面,檢視控制台輸出,看是否能成功打成jar包。

該處日志第一次可能下載下傳依賴jar包失敗,再次點選建構即可成功。

Jenkins+Docker 實作一鍵自動化部署項目!
Jenkins+Docker 實作一鍵自動化部署項目!

檢視項目位置

cd /var/jenkins_home/workspace
           

ll指令即可檢視是否存在

運作項目

因為我們項目和jenkins在同一台伺服器,是以我們用shell腳本運作項目,原理既是通過dockerfile 打包鏡像,然後docker運作即可。

Dockerfile

在springboot項目根目錄建立一個名為Dockerfile的檔案,注意沒有字尾名,其内容如下:(大緻就是使用jdk8,把jar包添加到docker然後運作prd配置檔案)

FROM jdk:8
VOLUME /tmp
ADD target/zx-order-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8888
ENTRYPOINT ["Bash","-DBash.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=prd"]
           

修改jenkins任務配置

Jenkins+Docker 實作一鍵自動化部署項目!

配置如下:

Jenkins+Docker 實作一鍵自動化部署項目!
-t:指定新鏡像名
.:表示Dockfile在目前路徑
           
cd /var/jenkins_home/workspace/zx-order-api
docker stop zx-order || true
docker rm zx-order || true
docker rmi zx-order || true
docker build -t zx-order .
docker run -d -p 8888:8888 --name zx-order zx-order:latest
           

備注:

  • 我上圖用了docker logs -f 是為了友善看日志,真實不要用,因為會一直等待日志,建構任務會失敗
  • 加|| true 是如果指令執行失敗也會繼續實行,為了防止第一次沒有該鏡像報錯

儲存

點選儲存即可

建構

Jenkins+Docker 實作一鍵自動化部署項目!

檢視jenkins控制台輸出,輸出如下,證明成功!

驗證

docker ps 檢視是否有自己的容器
docker logs 自己的容器名 檢視日志是否正确
           

浏覽器通路項目試一試

來源:https://blog.csdn.net/zqqiang0307/article/details/120458586