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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章