docker部署spring boot並接入skywalking【部署篇】


docker部署spring boot並接入skywalking【部署篇】

  首先給大家說聲抱歉,大家看我之前這篇文章:docker部署spring boot並接入skywalking【探索篇】(https://www.cnblogs.com/windysai/p/15350506.html),應該是挺懵逼的,不單讀者們看得迷迷糊糊,我估計以旁觀者身份看,應該也覺得雲里霧里。所以為了彌補我的過錯,今天好好交代下整個部署流程。

  這個測試是從線上業務拿下來的,線上的架構是前后端分離

  前端:nginx代理轉發到靜態目錄

  后端:nacos注冊中心,直接跑在操作系統的微服務jar包(沒用到docker),數據庫(mysql、mongo、redis)

  整個測試,涉及公司內網3台服務器:服務器A用於jenkins發布,服務器B專門跑docker服務(跑nginx、nacos、jar),最后一台服務器C用於跑mysql數據庫(原來已裝有mysql,數據從線上測試環境同步過來,mongo和redis懶得裝了,直接連線上的)

服務器 應用 補充說明
A jenkins發布前后端任務 內網本來已經裝有
B docker服務(nginx、nacos、jar、skywalking)  
C mysql mongo、redis連線上

 

一、准備工作

  服務器C上面說過,已裝有mysql,只需要把線上測試環境的表同步下來

  叫開發幫忙在gitlab上的前端和后端git地址,幫我另起測試分支,將連接服務中心nacos的ip都從線上的改成公司內網虛擬機。最關鍵的是,前端登錄接口要改成內網測試環境的。

 

二、skywalking部署

 yaml文件參考探索篇的鏈接

docker-compose -f skywalking-docker-compose.yaml up -d

 

三、前端部署

  jenkins寫的pipeline,npm編譯后直接發布到nginx代理的靜態頁目錄

像我這里測試:docker start nginx  映射到宿主機的目錄為 /usr/docker/nginx/html/項目目錄/項目目錄二級目錄名

 

、后端部署

1、docker部署啟動nacos

 用的是nacos的官方鏡像:nacos/nacos-server

下面的docker run命令上的 NACOS_SERVERS  ip 隨意

docker run -d --name nacos -p 8848:8848 -e PREFER_HOST_MODE=hostname -e MODE=standalone nacos/nacos-server -e NACOS_SERVERS=172.17.0.2:8848 

啟動之后需要進容器修改配置文件:

/home/nacos/conf/application.properties,主要是mysql連接信息改成公司服務器C的配置信息

重啟nacos生效:docker restart nacos

沒什么問題的話(關防火牆),訪問地址應為:http:// 服務器B的ip地址:8848/nacos/#/login

2、docker 部署微服務

  探索篇已經說過,由三個目錄組成:build、services、yaml。

  build目錄:基於skywalking-base 基礎鏡像來構建微服務鏡像,包括一些環境變量聲明

  services目錄:映射運行目錄到docker里面,包括jar包和日志

  yaml 目錄:裝有docker-compose.yaml文件,用於管理微服務啟停

這里交代一下,有些問題我還處理好,導致不能用docker-compose 來啟動微服務,今天測試完全是基於手動運行的,因為docker-compose跑的時候一直報錯說找不到build進去的腳本startup.sh,導致容器內的jar包壓根沒有起來。懷疑是構建微服務鏡像寫的Dockerfile文件有問題,打進去的運行腳本:startup.sh 是放在/app目錄下的,docker-compose文件映射的運行目錄也是/app,估計會覆蓋,導致腳本都搞沒了(猜測,可能會有誤導成分 = =)

  自動化只能等明天上班再排查下了。。。今晚遠程公司電腦都連不了,囧。。

手動運行流程介紹
假設我已經build好了一個微服務鏡像文件:叫 windysai.sw(運行docker images能查到)
 
(1)docker映射目錄和端口,做容器內外關聯
docker run -itd --name windysai-sw -p 8080:8080 -v /root/test_sw/services/windysai:/app windysai:sw bash

這里假設返回容器id:465456456

(2)進入容器

docker exec -it 465456456 bash

(3)容器內手動運行jar包

java -Duser.timezone=GMT+08 -javaagent:/skywalking/agent/skywalking-agent.jar -jar windysai.jar >> out_windysai.log

 

整台服務器B的docker服務運行完是這樣的

 

skywalking監控圖:

  前提是服務都已經成功注冊到nacos上哈(服務列表能查到一堆微服務注冊上來)

  登錄前端頁面好,進行一系列騷操作(開玩笑),就是各種點擊、同步,千萬不要刪除,或者增加啥。。。

 拓撲圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM