- 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
91 lines
3.2 KiB
Bash
Executable File
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 "$@"
|
|
|