Files
usda-vision/docker-compose.sh
salirezav 8f4225a62e feat: Add dynamic host IP detection for Docker Compose and Supabase config
- Add docker-compose.sh wrapper script that auto-detects host IP
- Update docker-compose.yml to use environment variable substitution
- Update Supabase config.toml files to use HOST_SITE_URL and SUPABASE_API_URL env vars
- Add scripts/get-host-ip.sh for IP detection
- Add scripts/set-host-env.sh for environment setup
- Add scripts/supabase-with-env.sh wrapper for Supabase CLI
- Add documentation for Docker Compose environment setup
- Update README.md with new usage instructions
- Replace hardcoded URLs with dynamic environment variables
2025-12-18 19:57:27 -05:00

91 lines
3.2 KiB
Bash
Executable File

#!/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" <<EOF
# Auto-generated by docker-compose.sh - do not edit manually
# Regenerated on each docker-compose command
HOST_IP=$HOST_IP
HOST_SITE_URL=$HOST_SITE_URL
SUPABASE_API_URL=$SUPABASE_API_URL
VITE_SUPABASE_URL=$VITE_SUPABASE_URL
VITE_MEDIA_API_URL=$VITE_MEDIA_API_URL
VITE_VISION_API_URL=$VITE_VISION_API_URL
EOF
# Also update management-dashboard-web-app/.env if it exists
WEB_ENV_FILE="$PROJECT_ROOT/management-dashboard-web-app/.env"
if [ -f "$WEB_ENV_FILE" ]; then
echo "Updating $WEB_ENV_FILE with detected host IP..." >&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 "$@"