PiggyMetrics微服務搭建最新記錄(docker)


背景

為了做下性能實踐,最近一直想找一個麻雀般的微服務項目(礙於服務器資源有限),也當練練部署能力。

網上找到了一個開源項目叫PiggyMetrics,11k+的star,雖然代碼時間是三四年前了,害,沒得事

目標

准備用之前的雲服務器搭建這個項目,網上教程也一大把,參考這篇博客,於是邊玩邊記錄。

Clone代碼

項目地址:https://github.com/sqshq/piggymetrics,首先你得本地安裝git,安裝過程就不說了。

於是:

git clone https://github.com/sqshq/piggymetrics.git

 報錯了,網上說把https改為git就行,我試了兩次不行,然后再試https就ok了。。。

 應該是github的安全機制導致,有點復雜,見:https://stackoverflow.com/questions/70663523/the-unauthenticated-git-protocol-on-port-9418-is-no-longer-supported

 Idea打包

使用Idea進行maven打包,可以一個個模塊手動打,也可以全部一起打。

我是一起打的,點項目名——Lifecycle——clean——閃電(去掉test)——最后package。

 這里會花點時間,我當時這里一直有兩個模塊打不了包,中途還修改了mevan配置,見idea的Maven配置改國內倉庫,也沒解決,就是沒有去掉打包的test過程導致的

打包完后,每個模塊目錄下有target文件,有對應的jar包

 教程有提到Dockfile文件,例如rigistry模塊的Dockfile文件(注意必須寫成Dockfile,D要大寫),我這邊沒問題

 Dockerfile的文件內容與說明如下:

FROM java:8-jre
MAINTAINER Alexander Lukyanchikov <sqshq@sqshq.com>

ADD ./target/registry.jar /app/
CMD ["java", "-Xmx200m", "-jar", "/app/registry.jar"]

EXPOSE 8761

說明:Dockfile文件中FROM指定創建該鏡像之前需要的基礎鏡像,這里表示需要java 8的jre運行環境的鏡像,MAINTAINER表示該鏡像的維護信息 ADD 是該微服務模塊生成的jar包需要拷貝一份到linux服務器的位置,這里就是表示從該微服務模塊的target目錄下,復制一份registry.jar到/app/目錄下 CMD是執行的命令,一個Dockfile只有一條CMD命令 EXPOSE 表示對外暴露的端口號 其他各個模塊的Dockfile編寫的基本上差不多,只需要替換各自模塊的自己的內容即可

 上傳服務器

可以把整個項目打包,然后上傳服務器后解壓,我是直接用xftp工具把文件拖過來的

 

即我們要部署該項目,首先得到每個模塊下創建docker鏡像(如registry模塊,docker  build -t registry . ),然后再依次啟動每個鏡像(如registry模塊,docker run -i -t registry /bin/bash)。。。

非常不方便,所以推薦使用Docker Compose工具。

Docker Compose 項目是 Docker 官方的開源項目,負責實現對 Docker 容器集群的快速編排,開源地址:https://github.com/docker/compose

其實上圖可以看到有兩個文件:docker-compose.yml和docker-compose.dev.yml(使用開發模式的配置),這就是Docker Compose工具的配置文件,也是作者的推薦吧。

安裝Docker Compse

Docker的安裝我就不說了,這里說Docker Compose的安裝,如下本機是沒有安裝的。

直接用以下命令從GitHub上下載安裝:

curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

有點慢得等個三四分鍾(趕時間可以使用的pip安裝方式),然后執行會報下面的錯,沒有執行權限的原因

修改執行權限:

chmod +x /usr/local/bin/docker-compose

於是這里docker compose就安裝好了。

使用Docker Compose啟動容器

首先進入到piggymetrics項目目錄下面,執行命令:

docker-compose -f docker-compose.yml up -d

 接下來就十分漫長的構建鏡像、創建服務和啟動項目了,-f指定配置文件(默認是docker-compose.yml),-d表示后台運行。

至此服務全部啟動完成,不過馬上服務器就卡死了(2核4G)。。。看來是負載太大了,重啟后查看鏡像:

docker-compose images

9個Spring Boot應用程序,4個MongoDB實例和RabbitMq,可以始終運行重要的服務:網關,注冊,配置,認證服務和帳戶服務。

上面我們也可以發現:piggymetrics項目包含多個服務,服務也就對應着docker容器,同一個鏡像也可以創建多個docker容器,比如該項目下的mongodb鏡像相同,但創建了4個不一樣的容器。

啟動docker服務后,全部容器會自動啟動(取消所有容器自啟動:docker update --restart=no $(docker ps -q)),外網訪問,IP+80端口是網關gateway,8761端口是Eureka注冊中心。

 

至此服務部署結束,這里搬運貼下docker compose常用的命令

命令 說明
docker-compose build 構建項目中的鏡像,--force-rm:刪除構建過程中的臨時容器;--no-cache:不使用緩存構建;--pull:獲取最新版本的鏡像
docker-compose up -d 構建鏡像、創建服務和啟動項目,-d表示后台運行
docker-compose run ubuntu ls -d 指定服務上運行一個命令,-d表示后台運行
docker-compose logs 查看服務容器輸出日志
docker-compose ps 列出項目中所有的容器
docker-compose pause [service_name] 暫停一個服務容器
docker-compose unpause [service_name] 恢復已暫停的一個服務容器
docker-compose restart 重啟項目中的所有服務容器(也可以指定具體的服務)
docker-compose stop 停止運行項目中的所有服務容器(也可以指定具體的服務)(docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2))
docker-compose start 啟動已經停止項目中的所有服務容器(也可以指定具體的服務)
docker-compose rm 刪除項目中的所有服務容器(也可以指定具體的服務),-f:強制刪除(包含運行的)
docker-compose kill 強制停止項目中的所有服務容器(也可以指定具體的服務)


免責聲明!

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



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