本文章實作最簡單全面的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
複制密碼到輸入框裡面
安裝插件
選擇第一個:安裝推薦的插件
建立管理者使用者
此賬戶一定要記住哦
系統配置
安裝需要插件
進入【首頁】–【系統管理】–【插件管理】–【可選插件】
搜尋以下需要安裝的插件,點選安裝即可。
- 安裝Maven Integration
- 安裝Publish Over SSH(如果不需要遠端推送,不用安裝)
- 如果使用Gitee 碼雲,安裝插件Gitee(Git自帶不用安裝)
配置Maven
進入【首頁】–【系統管理】–【全局配置】,拉到最下面maven–maven安裝
建立任務
建立任務
點選【建立任務】,輸入任務名稱,點選建構一個自由風格的軟體項目
源碼管理
點選【源碼管理】–【Git】,輸入倉庫位址,添加憑證,選擇好憑證即可。
建構觸發器
點選【建構觸發器】–【建構】–【增加建構步驟】–【調用頂層Maven目标】–【填寫配置】–【儲存】
此處指令隻是install,看是否能生成jar包
clean install -Dmaven.test.skip=true
儲存
點選【儲存】按鈕即可
測試
該功能測試是否能正常打包
建構
點選建構按鈕
檢視日志
點選正在建構的任務,或者點選任務名稱,進入詳情頁面,檢視控制台輸出,看是否能成功打成jar包。
該處日志第一次可能下載下傳依賴jar包失敗,再次點選建構即可成功。
檢視項目位置
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任務配置
配置如下:
-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 ps 檢視是否有自己的容器
docker logs 自己的容器名 檢視日志是否正确
浏覽器通路項目試一試
來源:https://blog.csdn.net/zqqiang0307/article/details/120458586