1. 程式人生 > 其它 >Jenkins部署專案到Docker容器

Jenkins部署專案到Docker容器

背景

  • 一個負責資料清洗的專案,以Kafka消費者的方式接受資料並處理。當消費資料數量過多時,要對專案進行效能優化。
  • 優化方式:伺服器通過部署多個專案增加專案程序的方式增加Kafka消費者的數量。每個程序裡使用執行緒池非同步做業務處理。

環境

  • Ubuntu18
  • Java8
  • Jenkins

前置條件

  • Jenkins安裝完成

Jenkins配置關鍵點

  • 上傳專案jar包及Dockerfile檔案到伺服器
  • 上傳檔案後,自動執行指令碼檔案

步驟

  • 開啟Jenkins頁面,選擇專案進行部署配置,基本配置網上一大把,這裡只會詳細說明Jenkins構建後操作,如下圖
  • 傳送伺服器檔案(Source files): 專案打包完成,所有檔案都會存在target目錄下
    • 專案jar包:專案構建的jar包
    • Dockerfile檔案:Docker構建映象基本配置,這個檔案位置,你可以自己決定,Dockerfile檔案內容如下
# 該映象需要依賴的基礎映象
FROM java:8

# COPY: 將應用的配置檔案複製到docker容器的/目錄下
# 此處作用:將當前目錄下所有jar合併打包到docker根目錄下,並重命名 app.jar
# 此處名稱自定義即可,如果只是使用一個jar包,那麼*.jar 可以指定自己上傳的jar包
COPY *.jar /app.jar

# EXPOSE:宣告埠
EXPOSE 8551

# 指定docker容器啟動時執行jar包
# 此處執行的jar包名稱,需要和上面重新命名名稱一致
ENTRYPOINT ["java", "-jar","/app.jar"] # 指定維護者的名字 MAINTAINER jingguoliang
  • 上傳檔案後,伺服器執行指令碼(Exec Command),指令碼內容如下
#!/bin/bash
echo "上傳遠端伺服器成功"

#映象名:自定義
imageNAME="cmms-receiver"
#該埠為Docker宿主機埠:自定義
PORT=8551
#容器1:使用映象包啟動的容器名稱,數量自定義,我是使用一個映象啟動3個容器
CONNAME1="cmms-receiver-2.0-RELEASE-1"
#容器2
CONNAME2="cmms-receiver-2.0-RELEASE-2"
#容器3
CONNAME3
="cmms-receiver-2.0-RELEASE-3" pwd ls -l #切換到 /home/ubuntu/cmms/lib 目錄 #此目錄為jenkins打包後傳送檔案目錄,目錄結構如下 #cmms-receiver-2.0-RELEASE.jar #classes/Dockerfile cd /home/ubuntu/cmms/lib/receiver ls -l #複製Dockerfile到lib目錄下 cp ./classes/Dockerfile ./Dockerfile echo "複製Dockerfile成功" ls -l #強制刪除已有容器1 { # try docker rm -f ${CONNAME1} } || { # catch echo "容器1不存在" } #強制刪除已有容器2 { # try docker rm -f ${CONNAME2} } || { # catch echo "容器2不存在" } #強制刪除已有容器3 { # try docker rm -f ${CONNAME3} } || { # catch echo "容器3不存在" } #強制刪除映象 { # try docker image rm -f ${imageNAME} } || { # catch echo "映象不存在" } #構建映象 echo "開始構建映象檔案" docker build -t ${imageNAME} . echo "構築映象結束" #建立並執行容器1:引數-p 8111:{port} 其中8111是容器暴露埠,自定義即可 docker run --name ${CONNAME1} -d -p 8111:${PORT} -e "SPRING_PROFILES_ACTIVE=uat" ${imageNAME} echo "建立容器$CONNAME1成功" #建立並執行容器2 docker run --name ${CONNAME2} -d -p 8112:${PORT} -e "SPRING_PROFILES_ACTIVE=uat" ${imageNAME} echo "建立容器$CONNAME2成功" #建立並執行容器3 docker run --name ${CONNAME3} -d -p 8113:${PORT} -e "SPRING_PROFILES_ACTIVE=uat" ${imageNAME} echo "建立容器$CONNAME3成功"