背景:書寫了 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