name: wallmuse services: postgres: image: postgres:17-alpine container_name: wallmuse-postgres restart: unless-stopped environment: POSTGRES_DB: ${POSTGRES_DB:-wallmuse} POSTGRES_USER: ${POSTGRES_USER:-wallmuse} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-wallmuse_dev_password} ports: - "5432:5432" volumes: - wallmuse-postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-wallmuse} -d ${POSTGRES_DB:-wallmuse}"] interval: 10s timeout: 5s retries: 10 redis: image: redis:8-alpine container_name: wallmuse-redis restart: unless-stopped command: ["redis-server", "--appendonly", "yes"] ports: - "6379:6379" volumes: - wallmuse-redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 10 minio: image: minio/minio:RELEASE.2025-04-22T22-12-26Z container_name: wallmuse-minio restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-wallmuse} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-wallmuse_minio_password} ports: - "9000:9000" - "9001:9001" volumes: - wallmuse-minio-data:/data healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 10s timeout: 5s retries: 10 minio-init: image: minio/mc:RELEASE.2025-04-16T18-13-26Z container_name: wallmuse-minio-init depends_on: minio: condition: service_healthy entrypoint: ["/bin/sh", "/scripts/create-buckets.sh"] environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER:-wallmuse} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-wallmuse_minio_password} S3_BUCKET_ORIGINALS: ${S3_BUCKET_ORIGINALS:-wallpaper-originals} S3_BUCKET_PREVIEWS: ${S3_BUCKET_PREVIEWS:-wallpaper-previews} S3_BUCKET_DOWNLOADS: ${S3_BUCKET_DOWNLOADS:-wallpaper-downloads} S3_BUCKET_REFERENCES: ${S3_BUCKET_REFERENCES:-wallpaper-references} S3_BUCKET_TEMP: ${S3_BUCKET_TEMP:-wallpaper-temp} volumes: - ./minio/create-buckets.sh:/scripts/create-buckets.sh:ro restart: "no" volumes: wallmuse-postgres-data: wallmuse-redis-data: wallmuse-minio-data: