34 lines
1.2 KiB
Bash
34 lines
1.2 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
cd /home/mikail/dana-medical
|
|
docker compose -p dana-medical -f docker-compose.prod.yml config --quiet
|
|
docker compose -p dana-medical -f docker-compose.prod.yml build api
|
|
docker compose -p dana-medical -f docker-compose.prod.yml create api
|
|
|
|
media_volume="$(docker volume ls -q \
|
|
--filter label=com.docker.compose.project=dana-medical \
|
|
--filter label=com.docker.compose.volume=media)"
|
|
test -n "$media_volume"
|
|
docker run --rm \
|
|
-v "$media_volume:/dest" \
|
|
-v /home/mikail/dana-medical/media:/src:ro \
|
|
postgres:16-alpine sh -c 'cp -a /src/. /dest/ && chown -R 10001:10001 /dest'
|
|
|
|
docker compose -p dana-medical -f docker-compose.prod.yml up -d api
|
|
api_id="$(docker compose -p dana-medical -f docker-compose.prod.yml ps -q api)"
|
|
test -n "$api_id"
|
|
i=0
|
|
status=starting
|
|
while [ "$i" -lt 45 ]; do
|
|
status="$(docker inspect --format '{{.State.Health.Status}}' "$api_id")"
|
|
[ "$status" = healthy ] && break
|
|
[ "$status" = unhealthy ] && docker logs --tail 80 "$api_id" && exit 1
|
|
sleep 2
|
|
i=$((i + 1))
|
|
done
|
|
[ "$status" = healthy ]
|
|
printf 'api_health=%s\n' "$status"
|
|
printf 'media_volume=%s\n' "$media_volume"
|
|
printf 'media_files=%s\n' "$(docker run --rm -v "$media_volume:/data:ro" postgres:16-alpine sh -c 'find /data -type f | wc -l')"
|