Configuración de Docker Compose para FastAPI + MongoDB + Mongo Express
Cuándo usar este stack
Esta combinación es ideal para microservicios y APIs asíncronas de alto rendimiento que procesan documentos no estructurados o esquemas altamente dinámicos (ej. catálogos de productos, ingesta de eventos o telemetría). La arquitectura asíncrona de FastAPI se complementa de forma nativa con MongoDB (mediante drivers como Motor) para soportar alta concurrencia de I/O, mientras que Mongo Express optimiza y acelera las tareas de depuración, administración visual y pruebas del esquema de datos durante el ciclo de desarrollo.
Variables de entorno críticas para producción
MONGO_INITDB_ROOT_PASSWORD(MongoDB): Define la contraseña del usuario administrativo inicial (MONGO_INITDB_ROOT_USERNAME). Debe generarse con una longitud mínima de 32 caracteres aleatorios y almacenarse vía Docker Secrets o gestor de secretos.ME_CONFIG_BASICAUTH_PASSWORD(Mongo Express): Contraseña de acceso a la interfaz web. Si este servicio no se deshabilita, una credencial por defecto (pass) permite acceso no autenticado al cluster completo.SECRET_KEY/JWT_SECRET_KEY(FastAPI): Semilla criptográfica utilizada para firmar tokens de sesión (JWT) y cifrar payloads sensibles dentro del backend.
Consejo DevOps: Seguridad y Aislamiento de Red
- Desacoplamiento y Hardening: No expongas el puerto de MongoDB (
27017) ni Mongo Express (8081) al host (0.0.0.0) en producción. Utiliza una red interna aislada (internal: trueen Docker Compose) para la comunicación entre FastAPI y MongoDB. - Uso de Profiles: Configura Mongo Express bajo un perfil exclusivo de desarrollo mediante la directiva
profiles: ["dev"], evitando su despliegue accidental en pipelines de producción y mitigando vectores de ataque sobre la interfaz administrativa.
Checklist de Seguridad antes de desplegar
- Cambiar las contraseñas por defecto en el archivo .env
- Mapear volúmenes persistentes en el VPS
- Configurar las reglas de firewall para los puertos requeridos