39 lines
2.0 KiB
Bash
Executable File
39 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Deploy spark-server to the ECS host and join mysql/redis/rustfs on shell_default.
|
|
# Host layout:
|
|
# /data/spark-server/app source (docker build context)
|
|
# /data/spark-server/configs config.yaml
|
|
# /data/spark-server/logs process logs
|
|
# /data/spark-server/images docker save of spark-server:latest
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
HOST="${SPARK_SSH_HOST:-root@47.236.66.9}"
|
|
KEY="${SPARK_SSH_KEY:-$HOME/.ssh/spark-ecs}"
|
|
DATA="${SPARK_DATA_DIR:-/data/spark-server}"
|
|
REMOTE="${SPARK_REMOTE_DIR:-$DATA/app}"
|
|
SSH=(ssh -i "$KEY" -o BatchMode=yes -o StrictHostKeyChecking=accept-new "$HOST")
|
|
|
|
"${SSH[@]}" "mkdir -p $DATA/app $DATA/configs $DATA/logs $DATA/images"
|
|
|
|
rsync -az --delete \
|
|
--exclude '.git/' \
|
|
--exclude 'bin/' \
|
|
--exclude 'logs/' \
|
|
--exclude 'vendor/' \
|
|
--exclude 'examples/' \
|
|
--exclude '.cursor/' \
|
|
--exclude '.idea/' \
|
|
--exclude '.vscode/' \
|
|
-e "ssh -i $KEY -o BatchMode=yes" \
|
|
"$ROOT/" "$HOST:$REMOTE/"
|
|
|
|
"${SSH[@]}" "cp $REMOTE/deploy/docker/config.docker.yaml $DATA/configs/config.yaml && chown -R 10001:10001 $DATA/logs"
|
|
"${SSH[@]}" "cd $REMOTE/deploy/docker && docker compose -f docker-compose.yaml build"
|
|
"${SSH[@]}" "docker save spark-server:latest | gzip -c > $DATA/images/spark-server.tar.gz"
|
|
"${SSH[@]}" "cd $REMOTE/deploy/docker && docker compose -f docker-compose.yaml up -d spark-server"
|
|
"${SSH[@]}" "docker exec spark-server /usr/local/bin/spark-migrate -config /app/configs/config.yaml -dir /app/migrations"
|
|
"${SSH[@]}" "cp $REMOTE/deploy/nginx/host/spark-sni.conf /etc/nginx/stream.d/spark-sni.conf && if [ -f /etc/letsencrypt/live/sparkr.wyrs365.com/fullchain.pem ]; then cp $REMOTE/deploy/nginx/host/sparkr.conf /etc/nginx/conf.d/sparkr.conf; fi && nginx -t && systemctl reload nginx"
|
|
"${SSH[@]}" "docker ps --filter name=spark-server --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
|
|
"${SSH[@]}" "curl -fsS http://127.0.0.1:18080/healthz && echo && curl -fsS http://127.0.0.1:18080/readyz && echo"
|