Conceptos 03 - Buenas prácticas de redes en Docker Compose
Recomendaciones para diseñar la conectividad entre servicios de forma segura, predecible y mantenible. Recorra cada práctica para ver un ejemplo concreto.
Concepto 1 de 5
Evite el acoplamiento a direcciones IP
Las direcciones IP de los contenedores no deben asumirse como estables. Las cadenas de conexión deben construirse a partir de nombres de servicio.
environment: - DATABASE_URL=postgresql://user:pass@172.18.0.3:5432/mydbenvironment: - DATABASE_URL=postgresql://user:pass@db:5432/mydbConcepto 2 de 5
Publique únicamente los puertos estrictamente necesarios
Si un servicio solo será consumido por otros contenedores, no requiere la directiva ports. Exponer puertos sin necesidad incrementa la superficie de acceso.
db: image: postgres:16 ports: - "5432:5432" # accesible desde el host sin necesidaddb: image: postgres:16 # sin ports: solo accesible por otros contenedoresConcepto 3 de 5
Aísle servicios internos mediante redes explícitas
La segmentación por redes permite controlar con mayor precisión qué servicios pueden comunicarse entre sí y cuáles deben permanecer aislados.
services: web: ports: - "80:80" networks: - frontend
api: networks: - frontend - backend
db: networks: - backend
networks: frontend: backend:Elige un origen y un destino para comprobar qué comunicaciones permite esta configuración.
Concepto 4 de 5
No confunda la conectividad interna con el acceso desde el host
Que un servicio sea accesible por nombre dentro de la red de Docker no implica que pueda consumirse directamente desde la máquina anfitriona.
Funciona: contenedor → contenedor
# Desde web hacia db (misma red Docker)postgresql://user:pass@db:5432/mydb ✓No funciona sin ports: host → contenedor
# Desde psql en el host (sin puerto publicado)psql -h localhost -p 5432 -U user mydb ✗Activa y desactiva cada mecanismo por separado y observa a qué vía de acceso afecta.
- Contenedor → contenedor
web → postgresql://…@db:5432/mydb - Host → contenedor
psql -h localhost -p 5432 -U user mydb
Concepto 5 de 5
Documente la topología de red de la aplicación
Incluir descripciones claras de servicios, redes y puertos publicados facilita la comprensión del sistema y mejora la incorporación de nuevos integrantes.
# README.md — sección de arquitectura
## Topología de red
Servicio | Red | Puerto publicado | Rol----------|-------------|------------------|------------------web | frontend | 80 | Punto de entradaapi | front+back | — | Puente entre redesdb | backend | — | Almacenamientoredis | backend | — | Caché
- frontend: accesible desde el host (web)- backend: aislada, solo comunicación internaAutoevaluación
Comprueba lo que aprendiste
Cuatro preguntas rápidas para verificar las ideas clave de la lectura. Cada respuesta incluye una explicación.
0/4 respuestas correctas