services: api: image: honcho:latest build: context: . dockerfile: Dockerfile depends_on: database: condition: service_healthy ports: - 8000:8000 volumes: - .:/app - venv:/app/.venv env_file: - .env deriver: build: context: . dockerfile: Dockerfile entrypoint: ["uv", "run", "python", "-m", "src.deriver"] depends_on: database: condition: service_healthy volumes: - .:/app - venv:/app/.venv env_file: - .env database: image: pgvector/pgvector:pg15 restart: always ports: - 5432:5432 command: ["postgres", "-c", "max_connections=800"] environment: - POSTGRES_DB=honcho - POSTGRES_USER=testuser - POSTGRES_PASSWORD=testpwd - 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 testuser -d honcho"] 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 mimir: image: grafana/mimir:2.14.0 command: - -config.file=/etc/mimir/mimir.yaml ports: - 9009:9009 volumes: - ./mimir-data:/data configs: - source: mimir_config target: /etc/mimir/mimir.yaml 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 depends_on: - mimir volumes: pgdata: venv: configs: mimir_config: content: | multitenancy_enabled: false server: http_listen_port: 9009 log_level: warn common: storage: backend: filesystem filesystem: dir: /data blocks_storage: backend: filesystem filesystem: dir: /data/blocks bucket_store: sync_dir: /data/tsdb-sync tsdb: dir: /data/tsdb compactor: data_dir: /data/compactor sharding_ring: kvstore: store: memberlist distributor: ring: instance_addr: 127.0.0.1 kvstore: store: memberlist ingester: ring: instance_addr: 127.0.0.1 kvstore: store: memberlist replication_factor: 1 ruler_storage: backend: filesystem filesystem: dir: /data/rules alertmanager_storage: backend: filesystem filesystem: dir: /data/alertmanager store_gateway: sharding_ring: replication_factor: 1