Chuck's Academy

Docker

Docker Compose: Gestión de Aplicaciones Multicontenedor

Cuando una aplicación necesita múltiples servicios, como bases de datos y servidores web, Docker Compose facilita la definición y ejecución de aplicaciones multicontenedor. Este capítulo explora cómo escribir archivos de configuración docker-compose.yml y gestionar múltiples contenedores con un solo comando.

Logo docker composeLogo docker compose

¿Qué es Docker Compose?

Docker Compose es una herramienta que permite definir y gestionar múltiples contenedores como una sola aplicación. Con un archivo docker-compose.yml, podemos especificar servicios, redes y volúmenes, y luego ejecutar todo el entorno con un solo comando.

Esta imagen muestra cómo Docker Compose gestiona varios contenedoresEsta imagen muestra cómo Docker Compose gestiona varios contenedores

Estructura de un Archivo docker-compose.yml

El archivo docker-compose.yml define cada servicio en la aplicación y cómo deben interactuar. Aquí se muestra una estructura básica de un archivo docker-compose.yml:

yaml
"En este archivo docker-compose punto y m l, definimos dos servicios: web y db. El servicio web usa la imagen my-web-app y mapea el puerto tres mil. El servicio db usa la imagen my-database y tiene un volumen llamado my-db-data para almacenamiento persistente."

Comandos Básicos de Docker Compose

Docker Compose permite gestionar el ciclo de vida de la aplicación multicontenedor con comandos sencillos.

Levantar los Servicios

Para iniciar todos los servicios definidos en docker-compose.yml, utilice el comando:

bash
"El comando docker-compose up menos d levanta todos los servicios en segundo plano según lo definido en el archivo docker-compose punto y m l."

Detener los Servicios

Para detener todos los servicios, use el siguiente comando:

bash
"El comando docker-compose down detiene y elimina todos los servicios definidos en el archivo docker-compose."

Definición de Servicios en Docker Compose

Cada servicio en docker-compose.yml representa un contenedor y puede incluir configuración de puertos, volúmenes, variables de entorno y más.

Configuración de Puertos y Volúmenes

Podemos especificar los puertos y volúmenes necesarios para cada servicio. Esto permite que los servicios compartan datos y estén accesibles externamente.

Ejemplo de configuración de puertos y volúmenes:

yaml
"Aquí, el servicio web mapea el puerto tres mil del contenedor al puerto tres mil del host, y monta el volumen local webdata en el directorio var barra www dentro del contenedor."

Configuración de Variables de Entorno

Podemos definir variables de entorno que cada servicio usará. Esto es útil para configurar parámetros de la aplicación sin modificar el código.

yaml
"En este ejemplo, el servicio web tiene dos variables de entorno: NODE_ENV establecida en production y API_KEY con el valor myapikey. Esto permite personalizar el comportamiento del contenedor."

Redes en Docker Compose

Docker Compose facilita la configuración de redes entre los servicios. Al definir redes, los servicios pueden comunicarse usando sus nombres de servicio como hostnames.

Creación de Redes Personalizadas

Ejemplo de configuración de redes en docker-compose.yml:

yaml
"Aquí, tanto el servicio web como db están conectados a una red llamada my-network. Esto les permite comunicarse entre sí usando los nombres de servicio."

Escalado de Servicios con Docker Compose

Docker Compose permite escalar los servicios para manejar más tráfico o mejorar la disponibilidad. Por ejemplo, podemos escalar el servicio web para que ejecute múltiples contenedores.

bash
"El comando docker-compose up menos d menos menos scale web igual tres levanta tres instancias del servicio web, mejorando su capacidad de respuesta."

Conclusión

Docker Compose simplifica la gestión de aplicaciones multicontenedor, permitiendo definir servicios, redes y volúmenes en un solo archivo. Esto facilita la configuración y el despliegue de entornos complejos. En el próximo capítulo, veremos buenas prácticas en Docker para optimizar y gestionar contenedores de forma eficiente.


Pregúntame lo que sea