dragonfly/deploy/docker-compose/run.sh

52 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
set -e
REPO=${REPO:-dragonflyoss}
TAG=${TAG:-latest}
CLIENT_TAG=${CLIENT_TAG:-latest}
DIR=$(cd "$(dirname "$0")" && pwd)
cd $DIR
prepare(){
mkdir -p config
ip=${IP:-$(hostname -i)}
sed "s,__IP__,$ip," template/client.template.yaml > config/client.yaml
sed "s,__IP__,$ip," template/seed-client.template.yaml > config/seed-client.yaml
sed "s,__IP__,$ip," template/scheduler.template.yaml > config/scheduler.yaml
sed "s,__IP__,$ip," template/manager.template.yaml > config/manager.yaml
}
run() {
# start all of docker-compose defined service
COMPOSE=docker-compose
# use docker compose plugin
if docker compose version; then
COMPOSE="docker compose"
fi
$COMPOSE up -d
# docker-compose version 3 depends_on does not wait for redis and mysql to be “ready” before starting manager ...
# doc https://docs.docker.com/compose/compose-file/compose-file-v3/#depends_on
for i in $(seq 0 10); do
service_num=$($COMPOSE ps --services |wc -l)
ready_num=$($COMPOSE ps | grep healthy | wc -l)
if [ "$service_num" -eq "$ready_num" ]; then
break
fi
echo "wait for all service ready: $ready_num/$service_num,$i times check"
sleep 2
done
# print service list info
$COMPOSE ps
exit 0
}
prepare
run