docker+jenkins+springboot終極自動化部署攻略

docker+jenkins+springboot終極智能全自動化部署

本篇文章引導你使用Jenkins部署SpringBoot項目,同時使用Docker和Git實現簡單的持續集成和持續部署。java

docker下安裝jenkins

拉取jenkins鏡像git

docker pull jenkins/jenkins
複製代碼

該鏡像爲最新版鏡像 jenkins非最新版 不少插件安裝不上spring

查看已經安裝的鏡像docker

docker images
複製代碼

運行鏡像shell

docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins/:/var/jenkins_home  jenkins/jenkins
複製代碼

簡單解釋一下這個語句瀏覽器

  • -d 表示已守護線程運行,即爲後臺運行
  • -p 表示docker容器和端口的映射,後面的是容器的端口,前面的是宿主機的端口,
  • -v 表示數據卷的映射,後面是容器內的文件夾地址,前面爲宿主機的

運行docker ps查看是否正常啓動springboot

[root@hyb ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                PORTS                                                  NAMES
1e358a510dc5        jenkins/jenkins          "/sbin/tini -- /us..."   5 weeks ago         Up 33 hours           0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp       myjenkins

複製代碼

若是未正常啓動多半是端口被佔用了,運行netstat -tunlp|grep 8080 便可檢查端口占用狀況bash

接下來打開瀏覽器訪問 你的ip:8080 便可看到jenkins的安裝界面,若是看不到的話檢查服務器防火牆設置服務器

首次運行時須要你輸入一個密碼,打開映射的路徑下的secrets/initialAdminPassword,例如 /var/jenkins/secrets/initialAdminPassword微信

輸入密碼後會看到安裝插件的頁面

示例
選擇第一個默認安裝

安裝完成後建立管理員,填寫完成提交便可

至此, jenkins已經安裝完畢啦


jenkins部署springboot

配置項目的Dockerfile

在項目的根目錄中新建一個文件 名稱爲Dockerfile ,填入如下內容

FROM java:8
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD service.jar /usr/share/myservice/myservice.jar
RUN bash -c 'touch /usr/share/myservice/myservice.jar'
ADD arthas-boot.jar /arthas-boot.jar
ENTRYPOINT java  -Xms512m   -Xmx1024m  -Xmn256m   -Xss256k   -XX:SurvivorRatio=8  -jar  /usr/share/myservice/myservice.jar
EXPOSE 8088
複製代碼

對jdk 配置的修改能夠自行修改

配置ssh服務器

首頁 -> 點擊系統管理 -> 管理插件 ->可選插件 -> 過濾:ssh -> 選擇Publish Over SSH插件,點擊直接安裝

jenkins首頁,系統管理 -> 系統設置 -> 下拉,找到Publish over SSH 點擊新增

圖片

  • Name爲服務器名稱
  • Hostname填寫服務器ip
  • userName填寫用戶名
  • RemoteDirectory指工做目錄,好比填寫/tmp 發送過去的全部文件默認在/tmp下

示例

點擊高級->選擇Use password authentication,or use a different key 輸入密碼或者輸入祕鑰

示例

點擊保存退出

建立任務

首頁點擊新建任務

示例

輸入任務名稱,選擇構建一個maven項目

示例

在general中選擇丟棄舊的構建以節省磁盤資源

示例

在源碼管理中選擇git配置好git地址和密碼

示例

在構建環境中指定根pom.xml文件,而且寫好maven打包命令

示例

在post steps中選擇Run only if build succeeds, 意爲在編譯成功後執行腳本在add post build step 中選擇執行shell 執行sh腳本

示例
示例
該腳本的做用爲發送打包好的jar文件到遠程服務器,咱們採用rsync 工具來傳輸,該工具對jar包有特殊支持,沒必要每次傳輸全部文件,遠程對比文件來增量替換jar文件,前提是在容器中跟遠程服務器有ssh免密登錄的權限,而且容器中與目標機器必須都安裝了rsync 該工具能夠採用apt-get 或者yum直接安裝,在腳本中添加

rsync -av /var/jenkins_home/workspace/你的項目路徑/test*.jar 你的用戶名@你的IP:/tmp/test/service.jar
複製代碼

修改本行命令中爲對應的jar包地址和對應服務器的放置地址

ps:在容器中使用rsync時,須要在容器中生成ssh祕鑰,遠程鏈接而不是宿主機

進入容器的命令爲docker exec -it 容器名 bash

ssh 免密登錄操做步驟:

1.ssh-keygen 一直回車

2.ssh-copy-id 用戶名@ip 輸入yes以後輸密碼就行了

在構建後操做中選擇send build artifacts over ssh 意爲向遠程服務器發送文件並執行命令

示例

選擇以前填寫好的服務器,sourcefiles填寫**/DockerFile remote directory 即爲遠程發送過去的文件地址

示例

execCommand中輸入如下腳本:

#!/bin
# DockerFile和jar包所在的文件夾
DOCKER_FILE_BASE_PATH=
# 修改jar包名稱統一改成service.jar
mv $DOCKER_FILE_BASE_PATH/*.jar $DOCKER_FILE_BASE_PATH/service.jar
# 應用名稱,也爲容器名稱
APPLICATION_NAME=
# 鏡像名稱
IMAGE_NAME=$APPLICATION_NAME:latest
# 中止並刪除舊的容器
set -e; docker stop $APPLICATION_NAME && docker rm $APPLICATION_NAME || EXIT_CODE=$? && true;
#刪除舊的鏡像
set -e; docker rmi $IMAGE_NAME || EXIT_CODE=$? && true;
#構建鏡像
docker build -t $IMAGE_NAME $DOCKER_FILE_BASE_PATH
#運行容器
docker run --name $APPLICATION_NAME -e "SPRING_PROFILES_ACTIVE=test"   -d -p 8085:8088 -p 10009:10009  $IMAGE_NAME
複製代碼

點擊保存,而後左上點擊當即構建

示例

點擊下面的buildhistory中正在構建的一個

示例

點擊控制檯輸出,便可查看構建日誌,至此整套自動化部署已徹底完成

有興趣能夠關注個人我的微信公衆號,會按期推送關於Java的技術文章,並且目前不恰飯都是乾貨哈哈哈哈

小阿宅Java
相關文章
相關標籤/搜索