1. 程式人生 > 其它 >Jenkins+Docker+SpringCloud微服務持續整合(一):微服務部署

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 #關閉自我保護
![image](https://img2022.cnblogs.com/blog/2387805/202203/2387805-20220301164434764-616342624.png) ![image](https://img2022.cnblogs.com/blog/2387805/202203/2387805-20220301164439818-331306461.png)

訪問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>
![image](https://img2022.cnblogs.com/blog/2387805/202203/2387805-20220301164819177-155319915.png)

打包後在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