Jenkins+Docker+SpringCloud微服務持續整合(一):微服務部署
連結:https://pan.baidu.com/s/1HR3Q-cojnCidRy1xrdlOxg
提取碼:7m56
--來自百度網盤超級會員V3的分享
Jenkins+Docker+SpringCloud持續整合流程說明
大致流程說明:
1)開發人員每天把程式碼提交到Gitlab程式碼倉庫
2)Jenkins從Gitlab中拉取專案原始碼,編譯並打成jar包,然後構建成Docker映象,將映象上傳到Harbor私有倉庫。
3)Jenkins傳送SSH遠端命令,讓生產部署伺服器到Harbor私有倉庫拉取映象到本地,然後建立容器。
4)最後,使用者可以訪問到容器
服務列表
伺服器名稱 | IP地址 | 安裝的軟體 |
---|---|---|
程式碼託管伺服器 | 192.168.195.180 | Gitlab |
持續整合伺服器 | 192.168.195.181 | Jenkins,Maven,Docker18.06.1-ce |
Docekr Harbor伺服器 | 192.168.195.183 | Docker18.06.1-ce,Harbor1.9.2 |
生產部署伺服器 | 192.168.195.184 | Docker18.06.1-ce |
SpringCloud微服務原始碼概述
專案架構:前後端分離
後端技術棧:SpringBoot+SpringCloud+SpringDataJpa(Spring全家桶)
微服務專案結構:
- tensquare_parent:父工程,存放基礎配置
- tensquare_common:通用工程,存放工具類
- tensquare_eureka_server:SpringCloud的Eureka註冊中心
- tensquare_zuul:SpringCloud 的閘道器服務
- tensquare_admin_service:基礎許可權認證中心,負責使用者認證(使用JWT認證)
- tensquare_gathering:一個簡單的業務模組,活動微服務相關邏輯
資料庫結構:
- tensquare_user:使用者認證資料庫,存放使用者賬戶資料。對應tensquare_admin_service微服務
- tensquare_gathering:活動微服務資料庫。對應tensquare_gathering微服務
微服務配置分析:
- tensquare_eureka
- tensquare_zuul
- tensquare_admin_service
- tensquare_gathering
本地部署(1)-SpringCloud微服務部署
本地執行微服務
1)逐一啟動微服務
微服務專案包解壓,目錄在idea中開啟,idea會自動下載相關元件外掛(等待時間較長)
缺少依賴組建
安裝maven
Windows本地配置maven環境
Maven官網:https://maven.apache.org/download.cgi
解壓目錄
新增兩個變數
修改配置檔案組建下載地址設定
E:\apache-maven-3.8.4\conf\settings.xml
點選檢視程式碼
//配置組建倉庫地址
<localRepository>E:/repo</localRepository>
//配置下載源
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public </url>
</mirror>
自動更新
解決:解決SpringBoot啟動類報錯can not resolve method 'run(java.lang.class,String [])'問題
本地資料庫匯入(windows本地安裝mysql5.7)
配置檔案修改為單機版本微服
啟動enreka服務
修改配置檔案application.yml
點選檢視程式碼
修改配置檔案application.yml
# 單機版
server:
port: 10086
#基本伺服器資訊
spring:
application:
name: eureka-server #服務ID
#enreka伺服器配置
eureka:
client:
fetch-registry: false #單機版關閉enreka相互註冊
register-with-eureka: false
service-url:
defaultZone: http://localhost:${server.port}/eureka #暴露eureka服務訪問地址
server:
enable-self-preservation: false #關閉自我保護
訪問enreka地址
開啟閘道器zuul
開啟許可權中心
開啟活動的微服務
所有服務全部開啟
在eureka頁面中服務全部註冊成功
測試:
安裝postman工具
執行並開啟
登入成功
獲取token
獲取資料庫資訊成功
在idea環境中先打包eureka的jar(使用:mvn clean package)
需要等待下載
問題報錯:
原因:沒有配置jdk目錄
解決方法:
點選檢視程式碼
<build>
<plugins>
<plugin>
<!--提供打包(將應用打包成可執行的jar包)-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<!-- 指定maven編譯的jdk版本 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<!--jdk地址-->
<executable>C:/Program Files/Java/jdk1.8.0_152/bin/javac</executable>
</configuration>
</plugin>
</plugins>
</build>
打包後在target下產生jar包
在target目錄中生成jar包
2)本地執行微服務的jar包
開啟cmd執行
java -jar xxx.jar
注意:在執行前,關閉idea中的eureka服務,不然會出現衝突
本地瀏覽器http://localhost:10086
本地部署(2)-前端靜態web網站
前端技術棧:NodeJS+VueJS+ElementUI
1)本地執行(安裝nodejs)
Vscode終端中執行:npm run dev
解決方法:
安裝Python2
npm install -g cnpm --registry=https://registry.npm.taobao.org
使用cmd切換到tensquareAdmin目錄下執行cnpm uninstall node-sass
再執行cnpm install node-sass
最後執行:cnpm run dev 成功
1)打包靜態web網站
npm run build
打包後,產生dist目錄的靜態檔案
2)部署到nginx伺服器
把dist目錄的靜態檔案拷貝到nginx的html目錄,啟動nginx
3)啟動nginx,並訪問
http://localhost:82