services: surrealdb: image: surrealdb/surrealdb:v3.0.4 command: start --auth --user root --pass root ports: - "8001:8000" volumes: - surrealdb-data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 5s timeout: 3s retries: 5 redis: image: redis:7-alpine ports: - "8002:6379" volumes: - redis-data:/data postgres: image: postgres:16-alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - "8003:5432" volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 5s timeout: 3s retries: 5 mailpit: image: axllent/mailpit:latest ports: - "8004:1025" - "8005:8025" typesense: image: typesense/typesense:27.1 environment: TYPESENSE_DATA_DIR: /data TYPESENSE_API_KEY: test ports: - "8006:8108" volumes: - typesense-data:/data garage-s3: image: ghcr.io/deuxfleurs/garage:v2.0.0 ports: - "8900:3900" - "8902:3902" volumes: - garage-data:/data environment: GARAGE_ALLOW_WORLD_READABLE_CONFIG: "true" volumes: surrealdb-data: redis-data: postgres-data: typesense-data: garage-data: