Files
object-storage/docker-compose.yml
johnhkchen aa237ae8ef Add explicit Traefik labels for S3 API routing
Coolify UI overrides SERVICE_FQDN env vars, so we need
explicit Traefik labels to route s3.b28.dev → port 9000

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 13:54:56 -07:00

53 lines
1.4 KiB
YAML

# MinIO Object Storage - Self-Hosted S3-Compatible Storage
# Deployment: objects.b28.dev
# Purpose: Backups, Directus uploads, demo artifacts
services:
minio:
image: quay.io/minio/minio:latest
container_name: minio
restart: unless-stopped
command: server /data --console-address ":9001"
environment:
# Root credentials (S3 API + Console)
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
# Server configuration
MINIO_SERVER_URL: https://s3.b28.dev
MINIO_BROWSER_REDIRECT_URL: https://objects.b28.dev
# Optional: Enable browser
MINIO_BROWSER: "on"
# Coolify: Multiple domain routing
SERVICE_FQDN_MINIO_9000: s3.b28.dev
SERVICE_FQDN_MINIO_9001: objects.b28.dev
volumes:
- minio_data:/data
expose:
- "9000" # S3 API
- "9001" # Web Console
labels:
# S3 API routing (port 9000)
- "traefik.http.routers.minio-s3.rule=Host(`s3.b28.dev`)"
- "traefik.http.routers.minio-s3.entrypoints=http"
- "traefik.http.routers.minio-s3.service=minio-s3-service"
- "traefik.http.services.minio-s3-service.loadbalancer.server.port=9000"
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
minio_data:
name: minio_data