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

Posted wangzy001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于docker-compose 解决服务启动完成时间顺序问题的主要内容,如果未能解决你的问题,请参考以下文章

docker多服务依赖问题解决

Docker-compose编排微服务顺序启动

如何在 docker-compose.yml 中开始测试之前等待数据库迁移完成

docker-compose 启动容器

docker-compose up是什么意思

centos7安装docker-compose报错解决办法