• 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

  • 相关阅读:
    c-free5
    node.js模块
    cd
    bower
    atom插件
    反射(操作MetaData)
    1.Html
    SQL语句 把一个表的数据复制到另外一个表里面
    Redis 可视化工具
    C# 多文件压缩包
  • 原文地址:https://www.cnblogs.com/chengmuyu/p/13099433.html
Copyright © 2020-2023  润新知