docker實現多個jar部署在一個容器中

docker實現多個jar部署在一個容器中

因爲項目中,需要運行多個容器,剛開始將每一個服務部署在一個單獨的容器中,這樣可以很輕鬆的實現自動部署,並且可以實現一個項目部署,多個環境運行。
但是公司申請了一個雲服務器,內存才4G,無法做的敏捷部署,所以考慮將多個微服務相關聯的部署到一個容器中,比如基礎服務放一個容器,其他服務放另外一個容器。
這樣,公司只要申請兩臺雲服務器,不但可以將一個微服務項目,分別部署在兩臺雲服務器上面,而且還節約內存。
經過測量差不多5個jspringboot服務能解壓1/4的內存。

首先看一下項目結構:
在這裏插入圖片描述
兩個dockerfile文件對應兩個開發環境。
Dockerfile_cloud文件內容:

FROM xxxxx/java-env:1.0.0
MAINTAINER xxx

COPY lin-server-api/target/lin-server-api-1.1.0.jar /lin-server-api-1.1.0.jar
COPY lin-server-box/lin-box-server/target/lin-box-server-1.1.0.jar /lin-box-server-1.1.0.jar
COPY lin-server-config/lin-config-server/target/lin-config-server-1.1.0.jar /lin-config-server-1.1.0.jar
COPY lin-server-eureka/target/lin-server-eureka-1.1.0.jar /lin-server-eureka-1.1.0.jar
COPY lin-server-message/lin-message-server/target/lin-message-server-1.1.0.jar /lin-message-server-1.1.0.jar
COPY lin-server-user/lin-user-server/target/lin-user-server-1.1.0.jar /lin-user-server-1.1.0.jar


COPY start_cloud.sh /usr/bin/start_cloud.sh
RUN chmod +x /usr/bin/start_cloud.sh
CMD nohup sh -c "start_cloud.sh && java -jar /lin-server-eureka-1.1.0.jar"

start_cloud.sh文件內容:

#!/bin/sh
nohup java -jar /lin-server-api-1.1.0.jar --spring.profiles.active=cloud > api_server.log &
nohup java -jar /lin-config-server-1.1.0.jar --spring.profiles.active=cloud -> config_server.log &
nohup java -jar /lin-message-server-1.1.0.jar --spring.profiles.active=cloud > message.log &
nohup java -jar /lin-user-server-1.1.0.jar --spring.profiles.active=cloud > user.log &

這裏解釋一下,Dockerfile_cloud文件將多個jar文件拷貝到之前生成的java環境中,並且start_cloud.sh裏面記錄了jar包的啓動邏輯,如果是測試環境的話,會拷貝start_test.sh到鏡像中,裏面是啓動測試環境的啓動邏輯。

//複製啓動腳本,並且爲腳本賦予執行權限
COPY start_cloud.sh /usr/bin/start_cloud.sh
RUN chmod +x /usr/bin/start_cloud.sh
//在dockerfile中執行多個shell命令的方式,如果只執行start_cloud.sh的話沒有前臺進程,無法保持docker容器的運行,加一個&& java -jar /lin-server-eureka-1.1.0.jar,保證項目會至少有一個前臺進程在運行
CMD nohup sh -c "start_cloud.sh && java -jar /lin-server-eureka-1.1.0.jar"

項目的構建和啓動
docker build -t xxx:1.1.0 -f ./Dockerfile_cloud .
docker push xxx:1.1.0
docker run -d --name zyydx-server -p 8105:8105 -p 8106:8106 -v /data/zyydx/log:/data/zyydx/log -v /data/zyydx/download:/data/zyydx/download xxx:1.1.0

另外jenkins下載並部署此應用的文章鏈接:

https://blog.csdn.net/lwy572039941/article/details/95337864

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章