# Local Firn stack: MinIO provides S3-compatible object storage and the # published Firn image provides the API. Override FIRNFLOW_IMAGE when testing # a locally-built image. services: minio: image: minio/minio:RELEASE.2025-09-07T16-13-09Z container_name: firnflow-minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin ports: - "9000:9000" - "9001:9001" volumes: - minio-data:/data healthcheck: test: ["CMD-SHELL", "mc ready local || exit 1"] interval: 5s timeout: 3s retries: 5 minio-init: # mc publishes on a different schedule from minio server; we only # use it for one-shot bucket init so floating tag is acceptable. image: minio/mc:latest depends_on: minio: condition: service_healthy entrypoint: > /bin/sh -c " mc alias set local http://minio:9000 minioadmin minioadmin && mc mb --ignore-existing local/firnflow " firnflow: image: ${FIRNFLOW_IMAGE:-ghcr.io/gordonmurray/firnflow:0.9.5} container_name: firnflow-api depends_on: minio-init: condition: service_completed_successfully environment: FIRNFLOW_S3_ENDPOINT: http://minio:9000 FIRNFLOW_S3_ACCESS_KEY: minioadmin FIRNFLOW_S3_SECRET_KEY: minioadmin FIRNFLOW_S3_BUCKET: firnflow FIRNFLOW_BIND: "0.0.0.0:3000" RUST_LOG: info ports: - "3000:3000" volumes: minio-data: