Skip to main content

Docker Configuration

Arkenos uses Docker Compose to orchestrate all four services.

Services

services:
  postgres:       # PostgreSQL 16 — port 5434 (host) → 5432 (container)
  minio:          # MinIO object storage — port 9002/9003
  backend:        # FastAPI — port 4201 (depends on postgres)
  agent:          # LiveKit agent (depends on backend)
  frontend:       # Next.js — port 4200 (depends on backend)

Networking

When running in Docker, services communicate on an internal network:
From → ToURLReason
Frontend (server) → Backendhttp://backend:8000/apiServer-side rendering (internal)
Frontend (client) → Backendhttp://localhost:4201/apiBrowser requests (host-mapped)
Agent → Backendhttp://backend:8000/apiConfig fetch, transcripts, usage
Backend → PostgreSQLpostgres:5432Database queries
Backend → MinIOminio:9000Custom agent file storage
The frontend uses two different API URLs:
  • INTERNAL_API_URL (http://backend:8000/api) — used by server components inside Docker
  • NEXT_PUBLIC_API_URL (http://localhost:4201/api) — used by client components in the browser
Do not remove INTERNAL_API_URL from docker-compose.yml — server components cannot reach localhost:4201 from inside the container.

Database Password

The database password is configured via POSTGRES_PASSWORD in the root .env:
# .env (project root)
POSTGRES_PASSWORD=your_password_here
Both the PostgreSQL container and the backend read this variable via Docker Compose. The backend uses it to construct DATABASE_URL automatically.

Commands

# Start all services
docker-compose up -d --build

# View all logs
docker-compose logs -f

# View logs for one service
docker-compose logs -f backend

# Stop all services
docker-compose down

# Stop and reset database
docker-compose down -v

# Rebuild one service
docker-compose up -d --build backend