Docker Deployment Guide
GAIA uses Docker Compose to orchestrate all the required services. This makes deployment simple and ensures consistency across different environments.Prerequisites
Docker Installation
Docker Installation
Install Docker Desktop (recommended for beginners):Or install Docker Engine (for servers):
System Requirements
System Requirements
Minimum Requirements:
- 2 CPU cores
- 4GB RAM
- 10GB free disk space
- Docker Engine 20.10+
- Docker Compose v2.0+
- 4+ CPU cores
- 8+ GB RAM
- 50+ GB SSD storage
- Regular backups configured
Project Structure
Quick Start
1
Clone and Navigate
2
Configure Environment
See the Environment Variables guide for
details.
3
Start All Services
4
Verify Deployment
Check that all services are running:Access the applications:
- GAIA Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
- ChromaDB: http://localhost:8080
- RabbitMQ Management: http://localhost:15672 (guest/guest)
- Mongo Express: http://localhost:8081 (admin/password)
Service Overview
The Docker Compose setup includes the following services:Frontend (gaia-frontend)
Frontend (gaia-frontend)
Next.js React Application
- Port: 3000
- Hot reload enabled in development
- Serves the web interface
Backend (gaia-backend)
Backend (gaia-backend)
FastAPI Python Application - Port: 8000 - Auto-reload enabled in
development - RESTful API and WebSocket support
yaml gaia-backend: container_name: gaia-backend build: ./backend ports: - "8000:80" command: ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--reload"]
Databases
Databases
PostgreSQL (Port: 5432)
- Stores user data and application state
- User: postgres, Password: postgres, DB: langgraph
- Document storage and metadata
- No authentication in development
- Caching and session storage
- No authentication in development
- Vector database for embeddings
- Persistent storage in Docker volume
Background Workers
Background Workers
Worker - Handles scheduled tasks and background processing
ARQ Worker - Async task queue processing
RabbitMQ - Message broker (Port: 5672, Management: 15672)
Docker Commands
Starting and Stopping
Viewing Logs
Service Management
Development Mode
For development, use the defaultdocker-compose.yml
:
- Hot reload for both frontend and backend
- Source code mounted as volumes
- Debug logging enabled
- Development databases with default credentials
Health Checks
All services include health checks. Monitor service health:Data Persistence
Data is persisted using Docker volumes:pgdata
- PostgreSQL datamongo_data
- MongoDB dataredis_data
- Redis datachroma_data
- ChromaDB vectorsrabbitmq_data
- RabbitMQ messages
Networking
Services communicate through thegaia_network
bridge network: