54 lines
1.5 KiB
Bash
54 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
APP_DOMAIN="${APP_DOMAIN:-event.brainshare.ng}"
|
|
API_DOMAIN="${API_DOMAIN:-api.event.brainshar.ng}"
|
|
ACME_EMAIL="${ACME_EMAIL:-admin@brainshare.ng}"
|
|
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-}"
|
|
JWT_SECRET="${JWT_SECRET:-}"
|
|
DEFAULT_SUPERADMIN_PASSWORD="${DEFAULT_SUPERADMIN_PASSWORD:-}"
|
|
|
|
if [[ -z "$POSTGRES_PASSWORD" ]]; then
|
|
echo "POSTGRES_PASSWORD is required"
|
|
exit 1
|
|
fi
|
|
if [[ -z "$JWT_SECRET" ]]; then
|
|
echo "JWT_SECRET is required"
|
|
exit 1
|
|
fi
|
|
if [[ -z "$DEFAULT_SUPERADMIN_PASSWORD" ]]; then
|
|
echo "DEFAULT_SUPERADMIN_PASSWORD is required"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
curl -fsSL https://get.docker.com | sh
|
|
fi
|
|
|
|
if ! docker compose version >/dev/null 2>&1; then
|
|
echo "Docker Compose plugin is required (docker compose)."
|
|
exit 1
|
|
fi
|
|
|
|
cat > .env.production <<EOF
|
|
TRAEFIK_ACME_EMAIL=$ACME_EMAIL
|
|
TRAEFIK_DOMAIN_APP=$APP_DOMAIN
|
|
TRAEFIK_DOMAIN_API=$API_DOMAIN
|
|
POSTGRES_PASSWORD=$POSTGRES_PASSWORD
|
|
DATABASE_URL=postgresql://eventsphere:$POSTGRES_PASSWORD@postgres:5432/eventsphere
|
|
REDIS_URL=redis://redis:6379
|
|
NEXT_PUBLIC_API_URL=https://$API_DOMAIN/api/v1
|
|
JWT_SECRET=$JWT_SECRET
|
|
JWT_ACCESS_TTL=15m
|
|
JWT_REFRESH_TTL=30d
|
|
AUTO_BOOTSTRAP=1
|
|
DEFAULT_TENANT_NAME=Brainshare Events
|
|
DEFAULT_TENANT_SLUG=brainshare
|
|
DEFAULT_SUPERADMIN_FULL_NAME=Super Admin
|
|
DEFAULT_SUPERADMIN_EMAIL=superadmin@brainshare.ng
|
|
DEFAULT_SUPERADMIN_PASSWORD=$DEFAULT_SUPERADMIN_PASSWORD
|
|
EOF
|
|
|
|
docker compose -f docker-compose.prod.yml --env-file .env.production up -d --build
|
|
docker compose -f docker-compose.prod.yml --env-file .env.production ps
|