YD-WEB/deploy/competition-api/start-on-event-host.sh

53 lines
1.5 KiB
Bash
Raw Permalink Normal View History

#!/bin/sh
set -eu
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
cd "$script_dir"
backend_container=${BACKEND_CONTAINER:-test_eventapi}
service_container=${SERVICE_CONTAINER:-yd-competition-api}
image_name=${IMAGE_NAME:-yd-competition-api:local}
volume_name=${DATA_VOLUME:-yd-competition-data}
if [ "$(docker inspect --format '{{.State.Running}}' "$backend_container")" != true ]; then
echo "Backend container is not running: $backend_container" >&2
exit 1
fi
if docker container inspect "$service_container" >/dev/null 2>&1; then
echo "Service container already exists: $service_container" >&2
exit 1
fi
docker build -f Dockerfile -t "$image_name" .
docker volume create "$volume_name" >/dev/null
docker run -d \
--name "$service_container" \
--restart unless-stopped \
--network "container:$backend_container" \
--mount "type=volume,source=$volume_name,target=/app/data" \
"$image_name"
ready=false
attempt=0
while [ "$attempt" -lt 20 ]; do
if docker exec "$backend_container" sh -c \
'curl -fsS --max-time 5 http://127.0.0.1:8787/api/competition/ping' >/dev/null 2>&1; then
ready=true
break
fi
attempt=$((attempt + 1))
sleep 1
done
if [ "$ready" != true ]; then
echo "Competition API did not become ready on 127.0.0.1:8787" >&2
docker logs --tail 30 "$service_container" >&2
exit 1
fi
docker exec "$backend_container" sh -c \
'curl -fsS --max-time 5 http://127.0.0.1:8787/api/competition/ping'
echo
echo "Competition API is running beside $backend_container"