services: db: image: postgres:17-alpine environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DB:-postgres} volumes: - beenvoice_dev_pg_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", 'pg_isready -U "$${POSTGRES_USER}" -d "$${POSTGRES_DB}"'] interval: 5s timeout: 5s retries: 10 ports: - "${POSTGRES_PORT:-5432}:5432" restart: unless-stopped # S3-compatible receipt storage for host dev (`bun dev`). API :9000, console :9001. minio: image: minio/minio:RELEASE.2025-04-22T22-12-26Z environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} volumes: - beenvoice_dev_minio_data:/data command: server /data --console-address ":9001" ports: - "${MINIO_API_PORT:-9000}:9000" - "${MINIO_CONSOLE_PORT:-9001}:9001" healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s timeout: 5s retries: 10 restart: unless-stopped minio-init: image: minio/mc:RELEASE.2025-04-22T16-22-07Z depends_on: minio: condition: service_healthy environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin} S3_BUCKET: ${S3_BUCKET:-beenvoice-receipts} entrypoint: > /bin/sh -c " mc alias set local http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD && mc mb local/$$S3_BUCKET --ignore-existing " restart: "no" volumes: beenvoice_dev_pg_data: beenvoice_dev_minio_data: