Files
minio-webui/docker-compose.prod.yml
T
Paul Nothaft da2a95b56e feat: Add combined Dockerfile for Swarm/Portainer deployment
- Create single Dockerfile that builds frontend and backend together
- Add nginx.conf for combined container (proxies to localhost)
- Update docker-compose.prod.yml for Swarm compatibility:
  - Use pre-built image instead of build directive
  - Replace restart with deploy.restart_policy
  - Single 'app' service instead of separate backend/frontend
2026-01-04 22:40:11 +01:00

75 lines
2.4 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
networks:
- minio-webui-network
deploy:
restart_policy:
condition: unless-stopped
# Combined app (backend + frontend)
app:
image: theluap/minio-webui: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
deploy:
restart_policy:
condition: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.minio-webui.rule=Host(`minio-webui.local.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: