背景:书写了 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