Files
Thinh Lam 688fac73e9
CI/CD / backend (push) Failing after 2m8s
CI/CD / frontend (push) Failing after 1m40s
CI/CD / deploy (push) Has been skipped
sciagent code + Gitea Actions CI/CD
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 09:38:30 +07:00

60 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Deploy the Docker Compose production stack from the repo root.
# Prerequisites: `.env` (from `.env.example`) on the SAME host/path as this repo.
#
# Usage:
# ./scripts/deploy-prod.sh # pull pinned images, build, up -d
# ./scripts/deploy-prod.sh --no-pull # offline / cached images only
#fdf
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
COMPOSE_ABS="${ROOT}/docker-compose.prod.yml"
cd "$ROOT"
DO_PULL=1
while [[ $# -gt 0 ]]; do
case "$1" in
--no-pull) DO_PULL=0 ;;
-h|--help)
grep -E '^#( |$)' "$0" | sed 's/^# \{0,1\}//'
exit 0
;;
*)
printf 'Unknown argument: %s\n' "$1" >&2
exit 1
;;
esac
shift
done
if [[ ! -f "$ROOT/.env" ]]; then
printf 'Missing %s\nRun: cp .env.example .env && edit secrets\n' "$ROOT/.env" >&2
exit 1
fi
echo "→ Validating prod environment..."
"$ROOT/scripts/verify-prod-env.sh"
echo "→ Validating compose file..."
docker compose --env-file "$ROOT/.env" -f "$COMPOSE_ABS" config >/dev/null
if [[ "$DO_PULL" -eq 1 ]]; then
echo "→ Pulling images..."
docker compose --env-file "$ROOT/.env" -f "$COMPOSE_ABS" pull
fi
echo "→ Building images..."
docker compose --env-file "$ROOT/.env" -f "$COMPOSE_ABS" build
echo "→ Starting stack..."
docker compose --env-file "$ROOT/.env" -f "$COMPOSE_ABS" up -d --remove-orphans
echo "→ Status"
docker compose --env-file "$ROOT/.env" -f "$COMPOSE_ABS" ps
printf '\nDeployed. Logs: docker compose --env-file .env -f docker-compose.prod.yml logs -f be0\n'
printf 'Connectivity: bash scripts/check-prod-stack.sh\n'
printf 'Postgres auth is FIXED on first DB init — docs/deploy-production-docker.md\n'