Files
minio-webui/docker-compose.prod.yml
T
Paul Nothaft cda9a2381c chore: Add production docker-compose for Traefik/Portainer deployment
- Adds docker-compose.prod.yml with Traefik labels
- Includes Redis for session management
- Configurable via environment variables for Portainer
- Homepage integration labels included
2026-01-04 22:28:03 +01:00

92 lines
2.9 KiB
YAML

version: '3.9'
services:
# Redis for session management
redis:
image: redis:7-alpine
command: redis-server --appendonly yes
volumes:
- /mnt/DockerMount/minio-webui/redis:/data
restart: unless-stopped
networks:
- minio-webui-network
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
# Backend API
backend:
image: theluap/minio-webui-backend:latest
environment:
- NODE_ENV=production
- PORT=3000
- JWT_SECRET=${JWT_SECRET}
- ADMIN_PASSWORD_HASH=${ADMIN_PASSWORD_HASH}
- SESSION_TIMEOUT=${SESSION_TIMEOUT:-3600}
- LOG_LEVEL=${LOG_LEVEL:-info}
- REDIS_HOST=redis
- REDIS_PORT=6379
# Optional: Default MinIO connection (can also be added via UI)
- DEFAULT_MINIO_ALIAS=${DEFAULT_MINIO_ALIAS:-}
- MINIO_ENDPOINT=${MINIO_ENDPOINT:-}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-}
# Optional: IP restriction
- ENABLE_IP_RESTRICTION=${ENABLE_IP_RESTRICTION:-false}
- ALLOWED_IPS=${ALLOWED_IPS:-}
# Optional: Email reports
- SMTP_HOST=${SMTP_HOST:-}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_SECURE=${SMTP_SECURE:-false}
- SMTP_USER=${SMTP_USER:-}
- SMTP_PASS=${SMTP_PASS:-}
- REPORT_SENDER=${REPORT_SENDER:-}
- REPORT_RECIPIENT=${REPORT_RECIPIENT:-}
- REPORT_SCHEDULE=${REPORT_SCHEDULE:-0 0 * * 1}
volumes:
- /mnt/DockerMount/minio-webui/logs:/app/logs
- /mnt/DockerMount/minio-webui/temp:/app/temp
- /mnt/DockerMount/minio-webui/mc-config:/home/nodejs/.mc
depends_on:
- redis
restart: unless-stopped
networks:
- minio-webui-network
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# Frontend (nginx + React)
frontend:
image: theluap/minio-webui-frontend:latest
depends_on:
- backend
restart: unless-stopped
deploy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.minio-webui.rule=Host(`minio-webui.local.nothaft.cloud`) || Host(`minio-webui.nothaft.cloud`)"
- "traefik.http.routers.minio-webui.entrypoints=https"
- "traefik.http.routers.minio-webui.tls.certresolver=dns"
- "traefik.http.services.minio-webui.loadbalancer.server.port=80"
- "traefik.docker.network=proxy"
# Homepage integration
- "homepage.group=Infrastructure"
- "homepage.name=MinIO WebUI"
- "homepage.icon=mdi-database"
- "homepage.href=https://minio-webui.local.nothaft.cloud/"
- "homepage.description=MinIO Storage Manager"
networks:
- minio-webui-network
- proxy
networks:
proxy:
external: true
minio-webui-network: