disclosure-bureau/infra/disclosure-stack/scripts/deploy.sh

46 lines
1.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# Deploy / update the disclosure stack on the VPS.
#
# Steps:
# 1. Ensure VPS_DEPLOY_ROOT exists.
# 2. Upload docker-compose.yml + .env to the VPS.
# 3. Pull images.
# 4. docker compose up -d.
# 5. Print status.
#
# Idempotent: re-run anytime, only changed services restart.
source "$(dirname "$0")/_lib.sh"
set -euo pipefail
STACK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
COMPOSE_FILE="${STACK_DIR}/docker-compose.yml"
ENV_FILE="${STACK_DIR}/.env"
if [ ! -f "$COMPOSE_FILE" ]; then
echo "$COMPOSE_FILE not found. The docker-compose.yml hasn't been generated yet — see README."
exit 1
fi
echo "→ Creating deploy root on VPS: $VPS_DEPLOY_ROOT"
vps_ssh "mkdir -p ${VPS_DEPLOY_ROOT}"
echo ""
echo "→ Uploading docker-compose.yml and .env"
vps_rsync "$COMPOSE_FILE" "${VPS_DEPLOY_ROOT}/docker-compose.yml"
vps_rsync "$ENV_FILE" "${VPS_DEPLOY_ROOT}/.env"
echo ""
echo "→ Pulling latest images on VPS"
vps_ssh "cd ${VPS_DEPLOY_ROOT} && docker compose pull"
echo ""
echo "→ Bringing stack up (will recreate changed services only)"
vps_ssh "cd ${VPS_DEPLOY_ROOT} && docker compose up -d --remove-orphans"
echo ""
echo "→ Current stack status:"
vps_ssh "cd ${VPS_DEPLOY_ROOT} && docker compose ps"
echo ""
echo "✓ Deploy complete. Logs: ./scripts/logs.sh <service>"