# Docker Compose Environment Setup ## Overview Docker Compose now automatically detects the host machine's IP address and sets all necessary environment variables. No manual script execution is required! ## Quick Start Instead of running `docker compose` directly, use the wrapper script: ```bash ./docker-compose.sh up -d ./docker-compose.sh down ./docker-compose.sh logs -f # etc. ``` The wrapper script automatically: 1. Detects your host machine's IP address 2. Sets `HOST_SITE_URL` for Supabase auth redirects 3. Sets all `VITE_*` environment variables for React apps 4. Generates/updates the `.env` file 5. Runs docker-compose with all your arguments ## What Gets Auto-Configured The script automatically sets these environment variables: - `HOST_IP` - The detected host machine IP (e.g., `192.168.1.87`) - `HOST_SITE_URL` - Full URL for Supabase auth (e.g., `http://192.168.1.87:3000`) - `VITE_SUPABASE_URL` - Supabase API URL (e.g., `http://192.168.1.87:54321`) - `VITE_MEDIA_API_URL` - Media API URL (e.g., `http://192.168.1.87:8090`) - `VITE_VISION_API_URL` - Vision API URL (e.g., `http://192.168.1.87:8000`) ## Manual Override If you need to override the auto-detected values, you can: 1. **Set environment variables before running**: ```bash export HOST_IP=192.168.1.100 ./docker-compose.sh up -d ``` 2. **Edit the `.env` file** (generated by the script): ```bash # Edit .env file nano .env # Then run docker compose normally docker compose up -d ``` 3. **Use docker-compose directly** (with fallback values): ```bash # The docker-compose.yml has fallback values, so this still works docker compose up -d ``` ## Environment Files ### Root `.env` File The root `.env` file is auto-generated by `docker-compose.sh` and contains: ``` HOST_IP=192.168.1.87 HOST_SITE_URL=http://192.168.1.87:3000 VITE_SUPABASE_URL=http://192.168.1.87:54321 VITE_MEDIA_API_URL=http://192.168.1.87:8090 VITE_VISION_API_URL=http://192.168.1.87:8000 ``` This file is automatically updated each time you run `docker-compose.sh`. ### `management-dashboard-web-app/.env` This file is optional and can contain: - `VITE_SUPABASE_URL` - Overrides the docker-compose value - `VITE_SUPABASE_ANON_KEY` - Required for Supabase authentication Example: ```env VITE_SUPABASE_URL=http://localhost:54321 VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` ## For Supabase CLI When using Supabase CLI (not Docker Compose services), you still need to set `HOST_SITE_URL`: ```bash # Option 1: Use the environment setup script source ./scripts/set-host-env.sh supabase start # Option 2: Use the wrapper script ./scripts/supabase-with-env.sh start # Option 3: Manual export HOST_SITE_URL="http://$(./scripts/get-host-ip.sh):3000" supabase start ``` ## How It Works 1. **IP Detection**: `scripts/get-host-ip.sh` detects the host IP using multiple methods 2. **Variable Setting**: `docker-compose.sh` sets all environment variables 3. **Env File Generation**: Creates/updates `.env` file for docker-compose to read 4. **Docker Compose**: Reads `.env` and substitutes `${VARIABLE}` syntax in `docker-compose.yml` ## Troubleshooting ### IP Detection Fails If the script can't detect your IP: ```bash # Check what IP is detected ./scripts/get-host-ip.sh # Manually set it export HOST_IP=192.168.1.100 ./docker-compose.sh up -d ``` ### Services Can't Connect Make sure: 1. The detected IP is accessible from your network 2. Firewall allows connections on the required ports 3. Services are using the correct URLs (check container logs) ### Using Different Ports If your services run on different ports, edit `.env` after it's generated: ```bash ./docker-compose.sh config # Generates .env nano .env # Edit ports docker compose up -d # Use docker compose directly now ``` ## Migration from Manual Setup If you were previously setting environment variables manually: 1. **Remove manual exports** from your shell profile 2. **Use `./docker-compose.sh`** instead of `docker compose` 3. **Delete old `.env` files** if they have hardcoded values (the script will regenerate) ## Example Workflow ```bash # 1. Start all services (auto-detects IP) ./docker-compose.sh up -d # 2. Check logs ./docker-compose.sh logs -f web # 3. Stop services ./docker-compose.sh down # 4. Restart with new IP detection ./docker-compose.sh up -d ``` That's it! No more manual environment variable setup needed.