services: minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin ports: - "9000:9000" # S3 API - "9001:9001" # Web console volumes: - minio-data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 10s timeout: 3s retries: 5 # One-shot: create the bucket and make it public-read so works. minio-init: 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 -p local/sop || true && mc anonymous set download local/sop " backend: build: context: ./sop-back environment: PROJECT_NAME: "Smash or Pass" ALLOWED_ORIGINS: '["http://localhost:8080","http://localhost:5173"]' ADMIN_USERNAME: "admin" ADMIN_PASSWORD: "change-me" DATABASE_URL: "sqlite:///./data/sop.db" S3_ENDPOINT_URL: "http://minio:9000" S3_PUBLIC_URL: "http://localhost:9000" S3_ACCESS_KEY: "minioadmin" S3_SECRET_KEY: "minioadmin" S3_BUCKET: "sop" S3_REGION: "us-east-1" ports: - "8000:8000" volumes: - backend-data:/app/data depends_on: - minio-init frontend: build: context: ./sop-front args: VITE_API_BASE_URL: "http://localhost:8000" ports: - "8080:80" depends_on: - backend volumes: minio-data: backend-data: