Files
mcp-maildir/docker-compose.yml
T
Sagent 01d15c486e
PR Checks / hadolint (pull_request) Successful in 23s
Docker Build and Push / test (pull_request) Successful in 5m19s
PR Checks / build-test (pull_request) Successful in 47s
Docker Build and Push / integration-test (pull_request) Successful in 5m30s
PR Checks / pytest (pull_request) Successful in 3m7s
Docker Build and Push / build (pull_request) Successful in 3m14s
ci: harden the qdrant integration job
The integration test job has been failing intermittently on main and on
open pull requests with `httpx.ReadTimeout: timed out` on the first write
to Qdrant, while `GET /collections` and `/healthz` kept answering.

Cause: the qdrant-client default request timeout is 5 seconds, and the job
only waits for `/healthz`, which is served before the storage engine
accepts writes. On a shared runner doing several builds at once, the first
collection creation or indexing exceeds 5s and the whole fixture errors
out.

- pin qdrant/qdrant to v1.19 (the digest `latest` and the cluster already
  run) and let Renovate track the pin in the workflows as well
- wait for a real write round-trip (create + delete a probe collection)
  instead of `/healthz` alone, and dump the container logs if it never
  becomes writable
- make the Qdrant client timeout configurable via QDRANT_TIMEOUT and set
  it to 60s in CI, where there is no latency SLA
2026-10-17 21:24:18 +00:00

32 lines
919 B
YAML

services:
qdrant:
image: docker.io/qdrant/qdrant:v1.19
container_name: mcp_maildir_qdrant
ports:
- "127.0.0.1:6333:6333" # REST API
- "127.0.0.1:6334:6334" # gRPC API
volumes:
- ./qdrant_storage:/qdrant/storage:z
restart: unless-stopped
mcp-server:
build:
context: .
dockerfile: pkg/Dockerfile
container_name: mcp_maildir_server
ports:
- "127.0.0.1:8000:8000" # Expose the MCP HTTP (SSE) server
env_file:
- .env
environment:
# Override Qdrant URL to point to the docker-compose service
- QDRANT_URL=http://qdrant:6333
volumes:
# Mount the source code for hot-reloading (optional)
- ./src:/app/src:ro,z
# Mount the maildir dump as read-only.
# Ensure you set MAILDIR_PATH in your .env file
- ${MAILDIR_PATH:-./maildir_dump}:/path/to/your/maildir/dump:ro,z
depends_on:
- qdrant