docker部署微服務


微服務單容器部署

最近在看容器,跟同事溝通,他想把微服務放到單個容器里部署,以實現環境不變.這個只能是測試自己玩一下,生產環境中單容器部署微服務容易出現,容器運行正常,但是部分服務不可用的情況,應用的管理也很麻煩,這里簡單做個記錄吧

實際啟動服務有三部分:

  1. nacos注冊中心
  2. redis緩存服務,實際后端服務還有mysql,這里它沒有容器化
  3. 多個springboot服務

這三部分各自運行在自己的容器中

FROM adoptopenjdk/openjdk8-openj9:alpine-jre
LABEL liulei getobjects@sina.com

ENV BASE_DIR="/opt/bidclear" \
    BASE_CODING="UTF-8" \
    BASE_XMS="-Xms128m" \
    BASE_XMX="-Xmx512m" \
    ACTIVE_PROFILE="test" \
    REDIS_HOST="redis" \
    REDIS_PORT="6379" \
    NACOS_HOST="nacos"

WORKDIR /$BASE_DIR

COPY ./jar/*.jar ./jar/
COPY ./start.sh ./start.sh
RUN chmod +x ./start.sh

EXPOSE 9961
ENTRYPOINT ["/opt/bidclear/start.sh"]

服務啟動:

docker-compose up -d

服務核心是ENTRYPOINT ["/opt/bidclear/start.sh"],將多個微服務的啟動腳本放到了一起.

執行腳本start.sh內容:

nohup java ${JAVA_OPT} -jar ${BASE_DIR}/jar/bidding-clearing-report-service-1.0.0.jar ${PRO_OPT} > ${BASE_DIR}/log/nohup-report.log 2>&1 &    
nohup java ${JAVA_OPT} -jar ${BASE_DIR}/jar/bidding-clearing-user-service-1.0.0.jar ${PRO_OPT} > ${BASE_DIR}/log/nohup-user.log 2>&1 &    
nohup java ${JAVA_OPT} -jar ${BASE_DIR}/jar/bidding-clearing-service-1.0.0.jar ${PRO_OPT} > ${BASE_DIR}/log/nohup-bidclear.log 2>&1 &    
nohup java ${JAVA_OPT} -jar ${BASE_DIR}/jar/bidding-clearing-gateway-service-1.0.0.jar ${PRO_OPT} > ${BASE_DIR}/log/nohup-gateway.log 2>&1 &    
nohup java ${JAVA_OPT} -jar ${BASE_DIR}/jar/bidding-clearing-log-service-1.0.0.jar ${PRO_OPT} > ${BASE_DIR}/log/nohup-log.log 2>&1 &    
nohup java ${JAVA_OPT} -jar ${BASE_DIR}/jar/bidding-clearing-message-service-1.0.0.jar ${PRO_OPT} > ${BASE_DIR}/log/nohup-message.log 2>&1

容器內部運行情況,因為通過dockerfile的entrypoint啟動了運行腳本,容器會把該腳本作為pid=1的進程,其內運行的服務都是它的子進程.
這里要說的是容器的退出,我腳本中啟動了6個服務,但是最后一個服務沒有加"&"(后台運行標識),因為容器內部全部是后台進程的話,容器會因為監聽不到服務運行而退出.
同時容器內部只能有一個前台進程與容器交互,所以這種寫法只能測試中玩一下,因為如果容器內的前台進程掛掉,整個容器就會退出,也就是所有該容器內的服務都會退出.

問題:

nacos服務進行服務注冊時會占用大量cpu,可能存在服務掛掉的情況

服務器配置:2核4g,1m帶寬的阿里雲服務器

參考示例:

https://github.com/liulei3/bidclear.git


免責聲明!

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



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