Overview
The Meta-Data Tag Generator uses Docker Compose to orchestrate multiple services including PostgreSQL, MinIO, Redis, backend API, and frontend application.Prerequisites
- Docker Engine 20.10+
- Docker Compose 2.0+
- At least 4GB of available RAM
- 10GB of available disk space
Quick Start
Services Overview
The stack includes 6 services:| Service | Container Name | Ports | Description |
|---|---|---|---|
| postgres | meta-tag-postgres | 5432 | PostgreSQL 15 database |
| minio | meta-tag-minio | 9000, 9001 | Object storage for files |
| redis | meta-tag-redis | 6379 | Job state and pub/sub |
| backend | meta-tag-backend | 8000 | FastAPI application |
| frontend | meta-tag-frontend | 3001 | Next.js web interface |
| nginx | meta-tag-nginx | 80, 443 | Reverse proxy (production) |
Service Configuration
PostgreSQL Database
- Automatic schema initialization from
schema.sql - Health checks to ensure database readiness
- Persistent data storage in named volume
- Alpine-based for minimal footprint
MinIO Object Storage
- API: http://localhost:9000
- Console: http://localhost:9001
- Default credentials: minioadmin / minioadmin123
Redis
- AOF persistence enabled
- Used for job state and pub/sub messaging
Backend Service
- Resource limits: 4GB max, 1GB reserved
- EasyOCR models cached to avoid re-downloading
- Waits for all dependencies to be healthy
- 40s start period for model initialization
Frontend Service
- Frontend UI: http://localhost:3001
- Multi-stage build for optimized production image
Nginx Reverse Proxy (Production)
Persistent Volumes
The following named volumes persist data across container restarts:Development vs Production
Development Mode
./backend/app for live code updates.
Production Mode
Health Checks
All services include health checks:- Backend: http://localhost:8000/api/health
- Frontend: http://localhost:3001
- PostgreSQL:
pg_isready -U metatag -d metatag_db - MinIO: http://localhost:9000/minio/health/live
- Redis:
redis-cli ping
Troubleshooting
Backend fails to start
Database connection errors
MinIO bucket not found
Port conflicts
Useful Commands
Next Steps
- Configure environment variables for production
- Review system architecture
- Set up monitoring and logging
- Configure SSL certificates for nginx