Overview
GAIA uses Docker Compose to run databases and services locally. In most cases, you don’t need to run Docker commands directly-mise automatically starts Docker when you run development commands.Docker files are located in
infra/docker/. The setup uses Nx to manage
Docker as a project with its own targets.Quick Start
Recommended: Use mise
nx run docker:docker:up before starting dev servers.
Manual Docker Control
If you need direct Docker control:Using Nx Docker Commands
Services
Core Databases
Application Services (Profile-based)
Development Tools
Profiles
Docker profiles allow running specific service groups:Default (No Profile)
Runs only infrastructure services (databases, queues):Backend Profile
Adds the FastAPI application to infrastructure:All Profile
Runs everything including workers:Production Setup
For production, usedocker-compose.prod.yml:
- Uses pre-built images from GHCR
- No volume mounts for source code
- Optimized for stability over development speed
Data Persistence
Named volumes preserve data across restarts:Reset All Data
Health Checks
All services include health checks:- Databases: Connection/ping tests
- Backend: HTTP
/healthendpoint - RabbitMQ:
rabbitmqctl status
Common Commands
Troubleshooting
Port already in use
Port already in use
Another service is using the port. Stop it or change the port mapping in
docker-compose.yml:
Container won't start
Container won't start
Check logs for the failing service:
Database connection refused
Database connection refused
Ensure containers are healthy:Wait for
healthy status before connecting.
