Add deploy script for whisper service
Syncs whisper/ to a remote host via rsync, rebuilds the image in place, and polls /health until the model is loaded or a 5 minute timeout hits.
This commit is contained in:
Executable
+36
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Deploy the whisper service to a remote host via rsync + ssh.
|
||||||
|
# Usage: ./deploy.sh [host] (default: minerva.lan)
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
HOST="${1:-minerva.lan}"
|
||||||
|
REMOTE_DIR="/opt/stacks/doctate-whisper"
|
||||||
|
LOCAL_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
echo ">>> Syncing $LOCAL_DIR -> $HOST:$REMOTE_DIR"
|
||||||
|
rsync -av \
|
||||||
|
--exclude 'deploy.sh' \
|
||||||
|
--exclude 'models/' \
|
||||||
|
"$LOCAL_DIR/" "$HOST:$REMOTE_DIR/"
|
||||||
|
|
||||||
|
echo ">>> Rebuilding + restarting on $HOST"
|
||||||
|
ssh "$HOST" "cd $REMOTE_DIR && \
|
||||||
|
docker compose down && \
|
||||||
|
docker build -t doctate-whisper . && \
|
||||||
|
docker compose up -d"
|
||||||
|
|
||||||
|
echo ">>> Waiting for /health (up to 5 min for first model download)"
|
||||||
|
for i in $(seq 1 60); do
|
||||||
|
if ssh "$HOST" "curl -sf http://localhost:9001/health" 2>/dev/null; then
|
||||||
|
echo
|
||||||
|
echo ">>> OK"
|
||||||
|
ssh "$HOST" "curl -s http://localhost:9001/info"
|
||||||
|
echo
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ">>> TIMEOUT — last logs:"
|
||||||
|
ssh "$HOST" "docker logs doctate-whisper --tail 40"
|
||||||
|
exit 1
|
||||||
Reference in New Issue
Block a user