deploy_hetzner.sh 1.92 KB
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
#!/bin/sh

dump_logs() {
CONTAINERS="suricata elasticsearch logstash kibana webserver api od mltd mqtt timescaledb grafana"
for CONTAINER in $CONTAINERS; do
echo "*** Logs for kea_$CONTAINER (start) ***"
docker logs kea_$CONTAINER
echo "*** Logs for kea_$CONTAINER (end) ***"
done
}

# Login into the CUREX registry
docker login https://registry.curex-project.eu:443/artifactory/curex-local/

# pull all containers
docker-compose \
-f docker-compose-hetzner.yml \
pull

sleep 1

# Keep the timestamp of when starting up containers
TIME_START=`date +%s`

# Just in case something is up from previous runs
echo "Bringing down any previous containers that are still running..."
./delete.sh

# Run containers
echo "Bringing up containers..."
docker-compose -f docker-compose-hetzner.yml up --detach

# loop until all containers are up
echo "Checking if all containers are up..."
while true; do
# if any container other than composer has exited, bail out
res=`docker ps -a | \
grep "/curex-local/kea_" | \
grep "Exited" | \
wc -l`
if [ $res -gt 0 ]; then
echo "ERROR: Some containers have exited."
docker ps -a | grep "^CONTAINER\|/curex-local/kea_"
dump_logs
docker-compose -f docker-compose-hetzner.yml down
exit 1
fi
# count containers that are up
res=`docker ps -a | \
grep "/curex-local/kea_" | \
grep "Up" | \
wc -l`
if [ $res -eq 11 ]; then
echo "All good!"
break
fi
# only wait for 10 mins until everything is up. It should be more than
# enough.
TIME_NOW=`date +%s`
if [ $((TIME_NOW - TIME_START)) -ge 600 ]; then
echo "ERROR: Timeout exceeded."
dump_logs
docker-compose -f docker-compose-hetzner.yml down
exit 2
fi
sleep 1
done

# Wait a bit more
sleep 60

# create and populate the database
echo "Creating and populating the database..."
docker-compose -f docker-compose-hetzner.yml exec -T api php artisan migrate:fresh --seed --force