MinIO Production Stack
Docker Compose: MinIO with Nginx load balancer sidecar, mc client container for administration, and lifecycle policy automation scripts for object expiry.
MinIO Production Stack
A Docker Compose setup for self-hosted S3-compatible object storage. MinIO in server mode behind an Nginx load balancer, a pre-configured mc client container for bucket management and policy automation, and shell scripts to apply lifecycle rules on a schedule.
What's Included
- MinIO Server — single-node mode with persistent volume; swap to distributed mode by adjusting the service definition
- Nginx Sidecar — load balancer / TLS terminator; handles SSL with your cert or a self-signed cert for local use
- mc Client Container — MinIO Client pre-configured to connect to the local server; run admin commands with
docker compose run mc ... - Lifecycle Policy Scripts — bash scripts using mc to apply expiry rules to buckets on a schedule via cron or a one-off run
- Health Checks — MinIO and Nginx both have Docker health checks; dependent services wait until ready
Developer Experience
- One
docker compose upstarts the full stack — MinIO, Nginx, and the mc client container - MinIO console available at port 9001; API at port 9000 (via Nginx)
- All credentials in
.env; no hardcoded secrets - mc aliases are pre-configured in the client container — no setup needed to run admin commands
What You Get
docker-compose.yml— full stack definitionnginx/nginx.conf— Nginx reverse proxy config for MinIOscripts/apply-lifecycle.sh— lifecycle policy automation script.env.example— all variables documentedREADME.md— quickstart, service URLs, and common mc commands
Service URLs
| Service | URL |
|---|---|
| MinIO API | http://localhost:9000 |
| MinIO Console | http://localhost:9001 |
| Nginx (proxied) | http://localhost:80 |
Requirements
Docker Engine with the Compose plugin. No cloud account needed — runs entirely on your own hardware.