#!/bin/bash # Production deployment script # Usage: ./deploy.sh [git_repo_url] [branch] [commit_hash] set -e # Default values GIT_REPO_URL=${1:-""} GIT_BRANCH=${2:-"ui-fix"} GIT_COMMIT=${3:-""} # Check if .env.production exists and source it if [ -f .env.production ]; then echo "Loading production environment variables..." export $(grep -v '^#' .env.production | xargs) else echo "Warning: .env.production not found. Make sure environment variables are set!" fi # Validate critical environment variables # if [ -z "$NEXTAUTH_SECRET" ] || [ "$NEXTAUTH_SECRET" = "YOUR_SUPER_SECURE_SECRET_KEY_HERE_AT_LEAST_32_CHARACTERS_LONG" ]; then # echo "ERROR: NEXTAUTH_SECRET must be set to a secure random string!" # echo "Generate one with: openssl rand -base64 32" # exit 1 # fi if [ -z "$NEXTAUTH_URL" ]; then echo "ERROR: NEXTAUTH_URL must be set to your production URL!" exit 1 fi if [ -z "$GIT_REPO_URL" ]; then echo "Building from local files..." docker-compose -f docker-compose.prod.yml build else echo "Building from git repository: $GIT_REPO_URL" echo "Branch: $GIT_BRANCH" if [ -n "$GIT_COMMIT" ]; then echo "Commit: $GIT_COMMIT" fi GIT_REPO_URL=$GIT_REPO_URL GIT_BRANCH=$GIT_BRANCH GIT_COMMIT=$GIT_COMMIT \ docker-compose -f docker-compose.prod.yml build fi echo "Starting production deployment..." docker-compose -f docker-compose.prod.yml down docker-compose -f docker-compose.prod.yml up -d echo "Deployment completed successfully!" echo "Application is running at http://localhost:3001"