Skip to main content

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

mise automatically runs 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:
For development, we recommend running databases in Docker and the API/web locally with mise for faster hot-reloading.

Production Setup

For production, use docker-compose.prod.yml:
Key differences:
  • 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

This deletes all local data including the database. Use with caution.

Health Checks

All services include health checks:
  • Databases: Connection/ping tests
  • Backend: HTTP /health endpoint
  • RabbitMQ: rabbitmqctl status
Check service health:

Common Commands


Troubleshooting

Another service is using the port. Stop it or change the port mapping in docker-compose.yml:
Check logs for the failing service:
Ensure containers are healthy:
Wait for healthy status before connecting.

See Also