#!/bin/bash # Docker Compose wrapper that automatically detects and sets host IP # Usage: ./docker-compose.sh [docker-compose-command] [args...] # Example: ./docker-compose.sh up -d set -e # Get the script directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$SCRIPT_DIR" # Change to project root cd "$PROJECT_ROOT" || exit 1 # Detect host IP HOST_IP=$("$SCRIPT_DIR/scripts/get-host-ip.sh") if [ $? -ne 0 ] || [ -z "$HOST_IP" ] || [ "$HOST_IP" = "127.0.0.1" ]; then echo "Warning: Could not detect host IP, using localhost" >&2 HOST_IP="localhost" fi # Set environment variables for docker-compose export HOST_IP export HOST_SITE_URL="http://${HOST_IP}:3000" export SUPABASE_API_URL="http://${HOST_IP}:54321" export VITE_SUPABASE_URL="http://${HOST_IP}:54321" export VITE_MEDIA_API_URL="http://${HOST_IP}:8090" export VITE_VISION_API_URL="http://${HOST_IP}:8000" # Also set for Supabase CLI (runs on host) export HOST_SITE_URL export SUPABASE_API_URL echo "Auto-detected host IP: $HOST_IP" >&2 echo "Environment variables set:" >&2 echo " HOST_IP=$HOST_IP" >&2 echo " HOST_SITE_URL=$HOST_SITE_URL" >&2 echo " SUPABASE_API_URL=$SUPABASE_API_URL" >&2 echo " VITE_SUPABASE_URL=$VITE_SUPABASE_URL" >&2 echo " VITE_MEDIA_API_URL=$VITE_MEDIA_API_URL" >&2 echo " VITE_VISION_API_URL=$VITE_VISION_API_URL" >&2 echo "" >&2 # Generate/update .env file for docker-compose ENV_FILE="$PROJECT_ROOT/.env" cat > "$ENV_FILE" <&2 # Backup original if it doesn't have our marker if ! grep -q "# Auto-updated by docker-compose.sh" "$WEB_ENV_FILE" 2>/dev/null; then cp "$WEB_ENV_FILE" "$WEB_ENV_FILE.backup.$(date +%Y%m%d_%H%M%S)" 2>/dev/null || true fi # Update the file, preserving other settings # Read existing file and replace URLs sed -i.bak \ -e "s|VITE_SUPABASE_URL=.*|VITE_SUPABASE_URL=$VITE_SUPABASE_URL|" \ -e "s|VITE_VISION_API_URL=.*|VITE_VISION_API_URL=$VITE_VISION_API_URL|" \ -e "s|VITE_MEDIA_API_URL=.*|VITE_MEDIA_API_URL=$VITE_MEDIA_API_URL|" \ -e "s|VITE_VIDEO_REMOTE_URL=.*|VITE_VIDEO_REMOTE_URL=http://${HOST_IP}:3001/assets/remoteEntry.js?v=\$(date +%s)|" \ -e "s|VITE_VISION_SYSTEM_REMOTE_URL=.*|VITE_VISION_SYSTEM_REMOTE_URL=http://${HOST_IP}:3002/assets/remoteEntry.js|" \ "$WEB_ENV_FILE" 2>/dev/null || true # Add marker comment if not present if ! grep -q "# Auto-updated by docker-compose.sh" "$WEB_ENV_FILE" 2>/dev/null; then echo "" >> "$WEB_ENV_FILE" echo "# Auto-updated by docker-compose.sh" >> "$WEB_ENV_FILE" fi rm -f "$WEB_ENV_FILE.bak" 2>/dev/null || true fi echo "Updated .env file with detected values" >&2 echo "" >&2 # Run docker-compose with all arguments exec docker compose "$@"