mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-08 22:58:01 -05:00
## Summary This PR adds the frontend service to the Docker Compose configuration, enabling `docker compose up` to run the complete stack, including the frontend. It also implements comprehensive environment variable improvements, unified .env file support, and fixes Docker networking issues. ## Key Changes ### 🐳 Docker Compose Improvements - **Added frontend service** to `docker-compose.yml` and `docker-compose.platform.yml` - **Production build**: Uses `pnpm build + serve` instead of dev server for better stability and lower memory usage - **Service dependencies**: Frontend now waits for backend services (`rest_server`, `websocket_server`) to be ready - **YAML anchors**: Implemented DRY configuration to avoid duplicating environment values ### 📁 Unified .env File Support - **Frontend .env loading**: Automatically loads `.env` file during Docker build and runtime - **Backend .env loading**: Optional `.env` file support with fallback to sensible defaults in `settings.py` - **Single source of truth**: All `NEXT_PUBLIC_*` and API keys can be defined in respective `.env` files - **Docker integration**: Updated `.dockerignore` to include `.env` files in build context - **Git tracking**: Frontend and backend `.env` files are now trackable (removed from gitignore) ### 🔧 Environment Variable Architecture - **Dual environment strategy**: - Server-side code uses Docker service names (`http://rest_server:8006/api`) - Client-side code uses localhost URLs (`http://localhost:8006/api`) - **Comprehensive config**: Added build args and runtime environment variables - **Network compatibility**: Fixes connection issues between frontend and backend containers - **Shared backend variables**: Common environment variables (service hosts, auth settings) centralized using YAML anchors ### 🛠️ Code Improvements - **Centralized env-config helper** (`/frontend/src/lib/env-config.ts`) with server-side priority - **Updated all frontend code** to use shared environment helpers instead of direct `process.env` access - **Consistent API**: All environment variable access now goes through helper functions - **Settings.py improvements**: Better defaults for CORS origins and optional .env file loading ### 🔗 Files Changed - `docker-compose.yml` & `docker-compose.platform.yml` - Added frontend service and shared backend env vars - `frontend/Dockerfile` - Simplified build process to use .env files directly - `backend/settings.py` - Optional .env loading and better defaults - `frontend/src/lib/env-config.ts` - New centralized environment configuration - `.dockerignore` - Allow .env files in build context - `.gitignore` - Updated to allow frontend/backend .env files - Multiple frontend files - Updated to use env helpers - Updates to both auto installer scripts to work with the latest setup! ## Benefits - ✅ **Single command deployment**: `docker compose up` now runs everything - ✅ **Better reliability**: Production build reduces memory usage and crashes - ✅ **Network compatibility**: Proper container-to-container communication - ✅ **Maintainable config**: Centralized environment variable management with .env files - ✅ **Development friendly**: Works in both Docker and local development - ✅ **API key management**: Easy configuration through .env files for all services - ✅ **No more manual env vars**: Frontend and backend automatically load their respective .env files ## Testing - ✅ Verified Docker service communication works correctly - ✅ Frontend responds and serves content properly - ✅ Environment variables are correctly resolved in both server and client contexts - ✅ No connection errors after implementing service dependencies - ✅ .env file loading works correctly in both build and runtime phases - ✅ Backend services work with and without .env files present ### Checklist 📋 #### For configuration changes: - [x] `.env.default` is updated or already compatible with my changes - [x] `docker-compose.yml` is updated or already compatible with my changes - [x] I have included a list of my configuration changes in the PR description (under **Changes**) 🤖 Generated with [Claude Code](https://claude.ai/code) --------- Co-authored-by: Lluis Agusti <hi@llu.lu> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co> Co-authored-by: Claude <claude@users.noreply.github.com> Co-authored-by: Bentlybro <Github@bentlybro.com>
95 lines
2.2 KiB
Batchfile
95 lines
2.2 KiB
Batchfile
@echo off
|
|
setlocal enabledelayedexpansion
|
|
|
|
REM Variables
|
|
set SCRIPT_DIR=%~dp0
|
|
set REPO_DIR=%SCRIPT_DIR%..\..
|
|
set CLONE_NEEDED=0
|
|
set LOG_FILE=
|
|
|
|
echo =============================
|
|
echo AutoGPT Windows Setup
|
|
echo =============================
|
|
echo.
|
|
|
|
REM Check prerequisites
|
|
echo Checking prerequisites...
|
|
where git >nul 2>nul
|
|
if errorlevel 1 (
|
|
echo Git is not installed. Please install it and try again.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo Git is installed.
|
|
|
|
where docker >nul 2>nul
|
|
if errorlevel 1 (
|
|
echo Docker is not installed. Please install it and try again.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo Docker is installed.
|
|
echo.
|
|
|
|
REM Detect repo
|
|
if exist "%REPO_DIR%\.git" (
|
|
echo Using existing AutoGPT repository.
|
|
set CLONE_NEEDED=0
|
|
) else (
|
|
set REPO_DIR=%SCRIPT_DIR%AutoGPT
|
|
set CLONE_NEEDED=1
|
|
)
|
|
|
|
REM Clone repo if needed
|
|
if %CLONE_NEEDED%==1 (
|
|
echo Cloning AutoGPT repository...
|
|
git clone https://github.com/Significant-Gravitas/AutoGPT.git "%REPO_DIR%"
|
|
if errorlevel 1 (
|
|
echo Failed to clone repository.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
echo Repository cloned successfully.
|
|
)
|
|
echo.
|
|
|
|
REM Navigate to autogpt_platform
|
|
cd /d "%REPO_DIR%\autogpt_platform"
|
|
if errorlevel 1 (
|
|
echo Failed to navigate to autogpt_platform directory.
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
REM Create logs directory
|
|
if not exist logs mkdir logs
|
|
|
|
REM Run docker compose with logging
|
|
echo Starting AutoGPT services with Docker Compose...
|
|
echo This may take a few minutes on first run...
|
|
echo.
|
|
set LOG_FILE=%REPO_DIR%\autogpt_platform\logs\docker_setup.log
|
|
docker compose up -d > "%LOG_FILE%" 2>&1
|
|
if errorlevel 1 (
|
|
echo Docker compose failed. Check log file for details: %LOG_FILE%
|
|
echo.
|
|
echo Common issues:
|
|
echo - Docker is not running
|
|
echo - Insufficient disk space
|
|
echo - Port conflicts (check if ports 3000, 8000, etc. are in use)
|
|
pause
|
|
exit /b 1
|
|
)
|
|
|
|
echo =============================
|
|
echo Setup Complete!
|
|
echo =============================
|
|
echo.
|
|
echo Access AutoGPT at: http://localhost:3000
|
|
echo API available at: http://localhost:8000
|
|
echo.
|
|
echo To stop services: docker compose down
|
|
echo To view logs: docker compose logs -f
|
|
echo.
|
|
echo Press any key to exit (services will keep running)...
|
|
pause >nul |