services: api: image: honcho:latest build: context: . dockerfile: Dockerfile entrypoint: ["sh", "docker/entrypoint.sh"] depends_on: database: condition: service_healthy redis: condition: service_healthy ports: - 8000:8000 volumes: - .:/app - venv:/app/.venv environment: - DB_CONNECTION_URI=postgresql+psycopg://postgres:postgres@database:5432/postgres - CACHE_URL=redis://redis:6379/0?suppress=true env_file: - path: .env required: false deriver: build: context: . dockerfile: Dockerfile entrypoint: ["/app/.venv/bin/python", "-m", "src.deriver"] depends_on: database: condition: service_healthy redis: condition: service_healthy volumes: - .:/app - venv:/app/.venv environment: - DB_CONNECTION_URI=postgresql+psycopg://postgres:postgres@database:5432/postgres - CACHE_URL=redis://redis:6379/0?suppress=true - METRICS_ENABLED=true env_file: - path: .env required: false database: image: pgvector/pgvector:pg15 restart: always ports: - 5432:5432 command: ["postgres", "-c", "max_connections=800"] environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_HOST_AUTH_METHOD=trust - PGDATA=/var/lib/postgresql/data/pgdata volumes: - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql - pgdata:/var/lib/postgresql/data/ healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"] interval: 5s timeout: 5s retries: 5 redis: image: redis:8.2 restart: always ports: - 6379:6379 volumes: - ./redis-data:/data healthcheck: test: ["CMD-SHELL", "redis-cli ping"] interval: 5s timeout: 5s retries: 5 prometheus: image: prom/prometheus:v3.2.1 ports: - 9090:9090 volumes: - ./docker/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prometheus-data:/prometheus depends_on: api: condition: service_started grafana: image: grafana/grafana:11.4.0 ports: - 3000:3000 environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer volumes: - ./grafana-data:/var/lib/grafana - ./docker/grafana-datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml:ro depends_on: prometheus: condition: service_started volumes: pgdata: venv: prometheus-data: