Devops 開發運維高階篇之Jenkins+Docker+SpringCloud微服務持續整合(上)
Jenkins+Docker+SpringCloud持續整合流程說明
大致流程說明:
1) 開發人員每天把程式碼提交到Gitlab程式碼倉庫
2) Jenkins從Gitlab中拉取專案原始碼,編譯並打成jar包,然後構建成Docker映象,將映象上傳到Harbor私有倉庫。
3) Jenkins傳送SSH遠端命令,讓生產部署伺服器到Harbor私有倉庫拉取映象到本地,然後建立容器。
4) 最後,使用者可以訪問到容器
服務列表
伺服器名稱 |
IP地址 |
安裝的軟體 |
程式碼託管伺服器 |
20.0.0.20 |
Gitlab |
持續整合伺服器 |
20.0.0.30 |
Jenkins,Maven,Docker18.06.1-ce |
Docker倉庫伺服器 |
20.0.0. |
Docker18.06.1-ce,Harbor1.9.2 |
生產部署伺服器 |
20.0.0. |
Docker18.06.1-ce |
SpringCloud微服務原始碼概述
專案架構:前後端分離
後端技術棧:SpringBoot+SpringCloud+SpringDataJpa(Spring全家桶)
微服務專案結構:
資料庫結構:
- tensquare_gathering:活動微服務資料庫。對應tensquare_gathering微服務
- tensquare_user:使用者認證資料庫,存放使用者賬戶資料。對應tensquare_admin_service微服務
微服務配置分析:
- tensquare_eureka
- tensquare_zuul
- tensquare_admin_service
- tensquare_gathering
本地部署-SpringCloud微服務部署
本地執行微服務
逐一啟動微服務
微服務專案包解壓,目錄在idea中開啟,
idea會自動下載相關元件外掛(等待時間較長,極大可能失敗,看人品,畢竟國外伺服器下載,沒有根治的方法)
失敗多來幾次直到成功
缺少依賴組建
安裝maven
Windows本地配置maven環境
解壓目錄:
然後開啟目錄去配置:
這個地方:
//配置下載源 <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public </url> </mirror>
會自動更新:
這樣做是為了下載外掛儘量不出問題!!!
在等待外掛過程中先幹其他的事
本地資料庫匯入(windows本地安裝mysql5.7)
安裝好後新增環境變數
然後cmd進入資料庫
我是按照我自己的流程做的:
有些配置和東西要在後面好了在搞前面的因人而異
本地部署-前端靜態web網站
前端技術棧:NodeJS+VueJS+ElementUI
本地執行(安裝nodejs)
Vscode終端中執行:npm run dev
安裝完先不管,然後繼續:(可以把快捷方式選上)
拖進去後
開啟vscode,去開啟這個檔案
找到之前放的開啟:
開啟之後
繼續安裝nodejs,一路預設
裝完後:
然後接著下載:python2
下載完:
然後找到前段目錄:
接著輸入:
然後再用cnpm run dev 執行一下這個前端目錄:
結果不會報錯入下介面:
輸入上面的地址:http://localhost:9528
就成了!
這一部分mysql 前端就沒問題了!!
接著繼續做:
開啟idea
# 單機版 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 #關閉自我保護
改完之後可以啟動一下eureka:
執行後可以發現埠開了10086
然後在瀏覽器輸入地址,訪問enreka:
然後搞閘道器:
修改完後:
然後訪問重新整理一下可以看到zuul註冊上去了:
然後繼續:
然後再去重新整理看一下也有了:
然後繼續:
執行後再去重新整理看一下:也有了
然後我們就開始測試:找到資料庫拿出資料,能拿出微服務到資料庫沒問題
前端拿不到資料就是前端的問題
安裝postman工具
安裝好後:
到這裡 微服務到資料庫就沒問題了!!
然後輸入:http://localhost:9528
接下來都是本地跑的,接下來如何打包:
首先要配置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>
把上面程式碼複製到pom.xml 裡
(pom.xml最後
</repositories>
......(複製的內容)
</project>之間
)
輸入打包命令:mvn clean package
如果提示mvn無法識別則需要重啟IDEA再進行打包
然後去找包:
可以看到打包裡的東西:
對jar包進行單獨執行:
命令執行這個包:
java -jar tensquare_eureka_server-1.0-SNAPSHOT.jarm
然後瀏覽器訪問:http://localhost:10086
由此可以看出,對於打的jar包是可以單獨在本地進行執行的