mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-30 03:00:41 -04: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>
160 lines
4.7 KiB
Markdown
160 lines
4.7 KiB
Markdown
# AutoGPT Platform
|
|
|
|
Welcome to the AutoGPT Platform - a powerful system for creating and running AI agents to solve business problems. This platform enables you to harness the power of artificial intelligence to automate tasks, analyze data, and generate insights for your organization.
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Docker
|
|
- Docker Compose V2 (comes with Docker Desktop, or can be installed separately)
|
|
|
|
### Running the System
|
|
|
|
To run the AutoGPT Platform, follow these steps:
|
|
|
|
1. Clone this repository to your local machine and navigate to the `autogpt_platform` directory within the repository:
|
|
|
|
```
|
|
git clone <https://github.com/Significant-Gravitas/AutoGPT.git | git@github.com:Significant-Gravitas/AutoGPT.git>
|
|
cd AutoGPT/autogpt_platform
|
|
```
|
|
|
|
2. Run the following command:
|
|
|
|
```
|
|
cp .env.default .env
|
|
```
|
|
|
|
This command will copy the `.env.default` file to `.env`. You can modify the `.env` file to add your own environment variables.
|
|
|
|
3. Run the following command:
|
|
|
|
```
|
|
docker compose up -d
|
|
```
|
|
|
|
This command will start all the necessary backend services defined in the `docker-compose.yml` file in detached mode.
|
|
|
|
4. After all the services are in ready state, open your browser and navigate to `http://localhost:3000` to access the AutoGPT Platform frontend.
|
|
|
|
### Docker Compose Commands
|
|
|
|
Here are some useful Docker Compose commands for managing your AutoGPT Platform:
|
|
|
|
- `docker compose up -d`: Start the services in detached mode.
|
|
- `docker compose stop`: Stop the running services without removing them.
|
|
- `docker compose rm`: Remove stopped service containers.
|
|
- `docker compose build`: Build or rebuild services.
|
|
- `docker compose down`: Stop and remove containers, networks, and volumes.
|
|
- `docker compose watch`: Watch for changes in your services and automatically update them.
|
|
|
|
### Sample Scenarios
|
|
|
|
Here are some common scenarios where you might use multiple Docker Compose commands:
|
|
|
|
1. Updating and restarting a specific service:
|
|
|
|
```
|
|
docker compose build api_srv
|
|
docker compose up -d --no-deps api_srv
|
|
```
|
|
|
|
This rebuilds the `api_srv` service and restarts it without affecting other services.
|
|
|
|
2. Viewing logs for troubleshooting:
|
|
|
|
```
|
|
docker compose logs -f api_srv ws_srv
|
|
```
|
|
|
|
This shows and follows the logs for both `api_srv` and `ws_srv` services.
|
|
|
|
3. Scaling a service for increased load:
|
|
|
|
```
|
|
docker compose up -d --scale executor=3
|
|
```
|
|
|
|
This scales the `executor` service to 3 instances to handle increased load.
|
|
|
|
4. Stopping the entire system for maintenance:
|
|
|
|
```
|
|
docker compose stop
|
|
docker compose rm -f
|
|
docker compose pull
|
|
docker compose up -d
|
|
```
|
|
|
|
This stops all services, removes containers, pulls the latest images, and restarts the system.
|
|
|
|
5. Developing with live updates:
|
|
|
|
```
|
|
docker compose watch
|
|
```
|
|
|
|
This watches for changes in your code and automatically updates the relevant services.
|
|
|
|
6. Checking the status of services:
|
|
```
|
|
docker compose ps
|
|
```
|
|
This shows the current status of all services defined in your docker-compose.yml file.
|
|
|
|
These scenarios demonstrate how to use Docker Compose commands in combination to manage your AutoGPT Platform effectively.
|
|
|
|
### Persisting Data
|
|
|
|
To persist data for PostgreSQL and Redis, you can modify the `docker-compose.yml` file to add volumes. Here's how:
|
|
|
|
1. Open the `docker-compose.yml` file in a text editor.
|
|
2. Add volume configurations for PostgreSQL and Redis services:
|
|
|
|
```yaml
|
|
services:
|
|
postgres:
|
|
# ... other configurations ...
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
|
|
redis:
|
|
# ... other configurations ...
|
|
volumes:
|
|
- redis_data:/data
|
|
|
|
volumes:
|
|
postgres_data:
|
|
redis_data:
|
|
```
|
|
|
|
3. Save the file and run `docker compose up -d` to apply the changes.
|
|
|
|
This configuration will create named volumes for PostgreSQL and Redis, ensuring that your data persists across container restarts.
|
|
|
|
### API Client Generation
|
|
|
|
The platform includes scripts for generating and managing the API client:
|
|
|
|
- `pnpm fetch:openapi`: Fetches the OpenAPI specification from the backend service (requires backend to be running on port 8006)
|
|
- `pnpm generate:api-client`: Generates the TypeScript API client from the OpenAPI specification using Orval
|
|
- `pnpm generate:api-all`: Runs both fetch and generate commands in sequence
|
|
|
|
#### Manual API Client Updates
|
|
|
|
If you need to update the API client after making changes to the backend API:
|
|
|
|
1. Ensure the backend services are running:
|
|
|
|
```
|
|
docker compose up -d
|
|
```
|
|
|
|
2. Generate the updated API client:
|
|
```
|
|
pnpm generate:api-all
|
|
```
|
|
|
|
This will fetch the latest OpenAPI specification and regenerate the TypeScript client code.
|