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
This commit is contained in:
90
docker-compose.sh
Executable file
90
docker-compose.sh
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/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 "$@"
|
||||
|
||||
Reference in New Issue
Block a user