Llevar contenedores a producción sin sorpresas
Funciona en mi máquina dejó de ser el problema. Ahora el problema es que funciona en el contenedor y no en producción.

Lo que cambia al salir del portátil
Un contenedor que funciona en desarrollo puede fallar en producción por razones que no tienen que ver con el código: límites de memoria, permisos, variables que no existen, un sistema de ficheros de sólo lectura, o simplemente que ahora hay tres copias en lugar de una.
La mayoría de estas diferencias se pueden anticipar, y casi ninguna se descubre probando en local.
Lo que hay que definir antes
| Elemento | Qué ocurre si falta |
|---|---|
| Comprobación de vida | Un proceso colgado sigue recibiendo tráfico |
| Comprobación de disponibilidad | Se envía tráfico antes de estar listo |
| Límite de memoria | Un contenedor consume el nodo entero |
| Límite de CPU | Una tarea pesada degrada al resto |
| Parada ordenada | Peticiones cortadas en cada despliegue |
| Registro a la salida estándar | Los registros se pierden con el contenedor |
Dos comprobaciones que no son la misma
La comprobación de vida responde a «¿sigue funcionando?»; si falla, el contenedor se reinicia. La de disponibilidad responde a «¿puede atender tráfico ahora?»; si falla, se le deja de enviar peticiones pero no se reinicia.
Confundirlas produce el fallo clásico: un servicio que tarda en arrancar se reinicia en bucle porque la comprobación de vida se activa antes de que esté listo.
Secretos
Las credenciales no van en la imagen ni en el repositorio. Se inyectan en el despliegue desde un almacén de secretos, y conviene comprobar que no aparecen en los registros, que es donde reaparecen con más frecuencia.
Imágenes
- Fijar la versión base, no usar la etiqueta más reciente: hace los despliegues irreproducibles.
- Reconstruir periódicamente para incorporar parches de seguridad de la base.
- No ejecutar como superusuario salvo que haya una razón concreta.
- Mantenerla pequeña: menos superficie y despliegues más rápidos.
- Etiquetar con el identificador del commit, para saber siempre qué hay desplegado.



