docker-compose 解决服务启动完成时间顺序问题

背景:书写了 docker-compose 配置,但是发现服务启动异常,添加 depends_on 依旧如此

原因:depends_on 只能解决服务前后顺序依赖问题,不能判断容器里面的服务是否启动成功,因此当前面的服务没启动成功时就进行连接,造成服务报错

解决方法:

书写一个监控端口的脚本,判断当服务启动完成后,再进行下一个服务启动

vi Dockerfile

FROM centos
MAINTAINER wangzy
COPY start.sh /opt
WORKDIR /opt/
CMD /opt/start.sh

判断脚本

start.sh

#!/bin/bash
export JAVA_HOME=/opt/jdk1.8.0_101
export PATH=${JAVA_HOME}/bin:$PATH
while :
    do
      portNum=$(netstat -antup|grep 8080|wc -l)
      if [[ $portNum -lt 1 ]]; then
          sleep 1
      else
          break
      fi
    done

cd /opt/jos* && sh  startup.sh
tail -F logs/stdout

 

上一篇:vs编译的程序出现错误:应用程序无法正常启动(0x000007b)


下一篇:FastAPI之嵌套依赖注入