services: postgres: image: postgres:16-alpine container_name: mirrormatch-postgres environment: POSTGRES_USER: mirrormatch POSTGRES_PASSWORD: mirrormatch POSTGRES_DB: mirrormatch ports: - "5432:5432" volumes: - ./docker/postgres/data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U mirrormatch -d mirrormatch"] interval: 5s timeout: 5s retries: 20 minio: image: minio/minio:latest container_name: mirrormatch-minio command: server --console-address ":9001" /data environment: MINIO_ROOT_USER: ${S3_ACCESS_KEY_ID:-minioadmin} MINIO_ROOT_PASSWORD: ${S3_SECRET_ACCESS_KEY:-minioadmin} ports: - "9000:9000" - "9001:9001" volumes: - ./docker/minio/data:/data minio-init: image: minio/mc:latest container_name: mirrormatch-minio-init depends_on: - minio environment: S3_BUCKET: ${S3_BUCKET:-mirrormatch} S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-minioadmin} S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-minioadmin} entrypoint: > sh -c " until mc alias set local http://minio:9000 $$S3_ACCESS_KEY_ID $$S3_SECRET_ACCESS_KEY; do sleep 1; done; mc mb -p local/$$S3_BUCKET || true; mc anonymous set none local/$$S3_BUCKET || true; exit 0; " # Optional: local SMTP testing UI at http://localhost:8025 mailpit: image: axllent/mailpit:v1.27 container_name: mirrormatch-mailpit profiles: ["dev"] ports: - "1025:1025" - "8025:8025"