minions-ai-agents/docker-compose.yml

85 lines
2.0 KiB
YAML

services:
# Arthur Agent API
app:
build: .
container_name: arthur_agent
ports:
- "8000:8000"
volumes:
- .:/app
environment:
- PYTHONUNBUFFERED=1
- POSTGRES_HOST=postgres
- QDRANT_HOST=qdrant
env_file:
- .env
depends_on:
postgres:
condition: service_healthy
qdrant:
condition: service_started
networks:
- arthur_net
command: uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
# PostgreSQL Database (Audit Logs)
postgres:
image: postgres:16-alpine
container_name: arthur_postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${POSTGRES_USER:-arthur}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-Arth#Sup0rt3_2026!xK9}
POSTGRES_DB: ${POSTGRES_DB:-arthur_db}
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- arthur_net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-arthur}"]
interval: 5s
timeout: 5s
retries: 5
# Vector Database (RAG)
qdrant:
image: qdrant/qdrant:latest
container_name: arthur_qdrant
ports:
- "6333:6333"
- "6334:6334" # gRPC port
volumes:
- qdrant_data:/qdrant/storage
environment:
QDRANT__SERVICE__GRPC_PORT: 6334
networks:
- arthur_net
# Langfuse - AI Tracing (Optional for debugging)
langfuse:
image: langfuse/langfuse:2
container_name: arthur_langfuse
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://${POSTGRES_USER:-arthur}:${POSTGRES_PASSWORD:-Arth#Sup0rt3_2026!xK9}@postgres:5432/langfuse
NEXTAUTH_SECRET: ${LANGFUSE_SECRET:-ArthurLangfuseSecret2026}
NEXTAUTH_URL: http://localhost:3000
SALT: ${LANGFUSE_SALT:-ArthurSalt2026Random}
depends_on:
postgres:
condition: service_healthy
networks:
- arthur_net
profiles:
- monitoring # Only start with: docker-compose --profile monitoring up
volumes:
postgres_data:
qdrant_data:
networks:
arthur_net:
driver: bridge