Docker 延遲服務啓動(wait-for-it.sh 腳本的使用)
延遲服務啓動
基於 wait-for-it.sh 腳本實現
腳本下載:https://github.com/vishnubob/wait-for-it
公共環境配置 .env
EUREKATAG=3.0.0
TMSTAG=1.0.1-SNAPSHOT
JAVA_OPTS=-Xms1g -Xmx1g -XX:+UseParallelGC
PROFILE=dev
eureka的Dockerfile配置
from java:8
ARG SERVICE
ARG TAG
ENV JARNAME=necp.mapp.${SERVICE}.boot-${TAG}.jar
ENV CONFIGFILE=$CONFIGFILE
ENV PROFILE=$PROFILE
ENV JAVA_OPTS=$JAVAA_OPTS
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ADD ./$JARNAME /app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Dspring.config.location=$CONFIGFILE -Dspring.cloud.config.profile=$PROFILE -DJAR_NAME=$JARNAME -jar /app.jar "]
tms的Dockerfile配置
from java:8
ARG SERVICE
ARG TAG
ENV JARNAME=iot.${SERVICE}.boot-${TAG}.jar
ENV CONFIGFILE=$CONFIGFILE
ENV PROFILE=$PROFILE
ENV JAVA_OPTS=$JAVAA_OPTS
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV LC_ALL en_US.UTF-8
ADD ./$JARNAME /app.jar
ADD ./wait-for-it.sh /wait-for-it.sh
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 關閉自啓動配置
# ENTRYPOINT ["sh", "./wait-for-it 172.20.0.11:8761 -t 30 --"]
# ENTRYPOINT ["sh","-c","java $JAVA_OPTS -Dspring.config.location=$CONFIGFILE -Dspring.cloud.config.profile=$PROFILE -DJAR_NAME=$JARNAME -jar /app.jar "]
docker-compose配置
重點在需要等待的服務 tms 裏 command 的配置,執行 wait-for-it.sh 腳本進行等待。
version: '3'
services:
eureka:
image: necp.mapp.eureka.boot:${EUREKATAG}
container_name: eureka
build:
context: ../server/eureka
dockerfile: Dockerfile
args:
SERVICE: eureka
TAG: ${EUREKATAG}
ports:
- "8761:8761"
networks:
kafka_zookeeper:
ipv4_address: 172.20.0.11
mac_address: 00:FF:0A:4E:5E:FD
volumes:
- /data/iot-server/conf/eureka:/conf
- /data/iot-server/logs/eureka:/logs
restart: on-failure
environment:
- CONFIGFILE=/conf/eureka.properties
- PROFILE=${PROFILE}
- JAVA_OPTS=${JAVA_OPTS}
tms:
image: iot.mapp.tms.boot:${TMSTAG}
container_name: tms
build:
context: ../server/tms
dockerfile: Dockerfile
args:
SERVICE: tms
TAG: ${TMSTAG}
ports:
- "19998:19998"
networks:
kafka_zookeeper:
ipv4_address: 172.20.0.14
mac_address: 00:FF:0A:4E:5E:FE
volumes:
- /data/iot-server/conf/tms:/conf
- /data/iot-server/logs/tms:/logs
restart: always
environment:
- CONFIGFILE=/conf/application.properties
- PROFILE=${PROFILE}
- JAVA_OPTS=${JAVA_OPTS}
depends_on:
- "eureka"
# 自行控制服務執行
command: ./wait-for-it.sh 172.20.0.11:8761 -t 30 -- java ${JAVA_OPTS} -Dspring.config.location=/conf/application.properties -Dspring.cloud.config.profile=${PROFILE} -jar /app.jar
# entrypoint:
# - bash ./wait-for-it.sh 172.20.0.11:8761 -t 30 --
# - sh java ${JAVA_OPTS} -Dspring.config.location=/conf/application.properties -Dspring.cloud.config.profile=${PROFILE} -jar /app.jar"
networks:
kafka_zookeeper:
external: true