docker-compose 微服务启动顺序脚本监听 dubbo

原理说明: command 里面的find.sh 监听微服务启动的log,如果log字段包含多出来的成功字符串 JVM running for 说明已经启动成功,可以继续启动依赖的服务,保证启动不报错,TODO的地方是 超时应发邮件提醒 1.yml文件 xxx-service:

    image: java

    container_name: xxx-service

    restart: always

    volumes:

        - /etc/timezone:/etc/timezone

        - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime

    command: ["/usr/src/wait.sh", "18","nohup java -jar -Xms128m -Xmx256m -XX:PermSize=64M -XX:MaxPermSize=128M /usr/src/myapp/xxx-service.jar > /usr/src/myapp/xxx-service.log &"]

    links:

        - zzz-service



yyy-service:

    image: java

    container_name: yyy-service

    restart: always

    volumes:

        - /etc/timezone:/etc/timezone

        - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime

    command: ["/usr/src/find.sh", "5,hhh-service,www-service","nohup java -jar -Xms128m -Xmx256m -XX:PermSize=64M -XX:MaxPermSize=128M /usr/src/myapp/yyy-service.jar > /usr/src/myapp/yyy-service.log &"]

    links:

        - zzz-service

2.脚本 find.sh #!/bin/bash

source /usr/src/find-set.sh

set -e

time="$1"

echo "***************************************** params $time ****************************************************"

shift

x=$time

cmd="$@"

echo "x $x"

echo "cmd $cmd"

echo "$cmd" >> /usr/src/test.txt

OLD_IFS="$IFS"

IFS=","

array=($x)

IFS="$OLD_IFS"

time=${array[0]}

echo "time $time"

for((i=1;i<${#array[@]};i++));

do 

  elem=${array[$i]}

  echo "$i : $elem"   

  echo $elem

  project=$elem

  findNum=${project//-/_}     

  echo "findNum: $findNum"     

  eval findForNum=\$$findNum

  echo "findForNum: $findForNum"	   

while(($findForNum == grep -c "$successStr" /xxx/$project/logs/$project.log))

do

echo "waiting ... $findNum"

sleep 5

done

done;

echo "started"

sleep $time

exec $cmd

find-set.sh #!/bin/bash

export successStr='JVM running for'

export basedata_service=grep -c "$successStr" /xxx-service/logs/xxx-service.log

wait.sh #!/bin/bash

wait.sh

set -e

time="$1"

shift

cmd="$@"

sleep $time

exec $cmd

重启的脚本

#!/bin/bash

restart.sh

cd /home/xxx/compose

docker-compose down

sleep 3

sh /home/xxx//cpjar.sh

sync

echo 3 > /proc/sys/vm/drop_caches

docker-compose up -d

转载于:https://my.oschina.net/u/1052192/blog/1844122

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值