# Fabled Scribe from the pre-built image: # docker compose -f docker-compose.quickstart.yml up -d # Then open http://localhost:5000 (the first account registered becomes admin) # and connect Claude from Settings → MCP Access. services: app: image: git.fabledsword.com/bvandeusen/fabledscribe:latest ports: - "5000:5000" environment: DATABASE_URL: "postgresql+asyncpg://scribe:scribe@db:5432/scribe" # Set SECRET_KEY in the environment or a .env file beside this one. SECRET_KEY: "${SECRET_KEY:-change-me-in-production}" LOG_LEVEL: "${LOG_LEVEL:-INFO}" volumes: - app_data:/data depends_on: db: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/api/health')"] interval: 30s timeout: 10s retries: 3 start_period: 30s db: # Postgres 17 with the vector extension Scribe needs. image: pgvector/pgvector:pg17 stop_grace_period: 120s volumes: - pgdata:/var/lib/postgresql/data environment: POSTGRES_USER: scribe POSTGRES_PASSWORD: scribe POSTGRES_DB: scribe # Lenient on purpose: health only orders app startup, so a stalled check # must not get the database killed. healthcheck: test: ["CMD-SHELL", "pg_isready -U scribe"] interval: 30s timeout: 10s retries: 10 start_period: 180s restart: unless-stopped volumes: app_data: pgdata: