Compartir comentarios
Las respuestas se generan en base a la documentación.

Usar Compose en producción

Cuando defines tu aplicación con Compose en desarrollo, puedes utilizar esta definición para ejecutarla en diferentes entornos, como CI, staging (pruebas) y producción.

La forma más fácil de desplegar una aplicación es ejecutarla en un único servidor, de manera similar a cómo ejecutarías tu entorno de desarrollo. Si deseas escalar tu aplicación, puedes ejecutar aplicaciones de Compose en un clúster de Swarm.

Modifica tu archivo de Compose para producción

Es posible que necesites realizar cambios en la configuración de tu aplicación para que esté lista para producción. Estos cambios podrían incluir:

  • Eliminar las vinculaciones de volúmenes (volume bindings) para el código de la aplicación, de modo que el código permanezca dentro del contenedor y no pueda modificarse desde el exterior.
  • Realizar la vinculación a puertos diferentes en el host.
  • Configurar las variables de entorno de manera diferente, como reducir la verbosidad de los registros (logging) o especificar configuraciones para servicios externos, como un servidor de correo electrónico.
  • Especificar una política de reinicio como restart: always para evitar tiempos de inactividad.
  • Añadir servicios adicionales, como un agregador de registros (logs).

Por este motivo, considera definir un archivo de Compose adicional, por ejemplo, compose.production.yaml, con detalles de configuración específicos para producción. Este archivo de configuración solo necesita incluir los cambios que deseas realizar con respecto al archivo de Compose original. El archivo de Compose adicional se aplica sobre el compose.yaml original para crear una nueva configuración.

Una vez que tengas un segundo archivo de configuración, puedes utilizarlo con la opción -f:

$ docker compose -f compose.yaml -f compose.production.yaml up -d

Consulta Usar múltiples archivos de Compose para ver un ejemplo más completo y conocer otras opciones.

Despliegue de cambios

Cuando realices cambios en el código de tu aplicación, recuerda volver a compilar la imagen y recrear los contenedores de tu aplicación. Para volver a desplegar un servicio llamado web, utiliza:

$ docker compose build web
$ docker compose up --no-deps -d web

Este primer comando vuelve a compilar la imagen para web y luego detiene, destruye y recrea únicamente el servicio web. La bandera --no-deps evita que Compose recree también los servicios de los que depende web.

Ejecución de Compose en un solo servidor

Puedes usar Compose para desplegar una aplicación en un host de Docker remoto configurando adecuadamente las variables de entorno DOCKER_HOST, DOCKER_TLS_VERIFY y DOCKER_CERT_PATH. Para obtener más información, consulta Variables de entorno predefinidas.

Una vez que hayas configurado tus variables de entorno, todos los comandos habituales de docker compose funcionarán sin necesidad de configuración adicional.

Siguientes pasos