Docker Compose es una herramienta poderosa que permite definir y ejecutar aplicaciones Docker multi-contenedor. Con Docker Compose, puedes usar un archivo YAML para configurar los servicios de tu aplicación. Luego, con un solo comando, puedes crear e iniciar todos los servicios desde tu configuración.

¿Qué es Docker Compose?

Docker Compose es una herramienta que simplifica la gestión de aplicaciones que constan de múltiples contenedores. En lugar de ejecutar y gestionar cada contenedor individualmente, Docker Compose permite definir todos los contenedores y sus configuraciones en un solo archivo, llamado docker-compose.yml.

Beneficios de Docker Compose

  1. Simplicidad: Facilita la definición y ejecución de aplicaciones multi-contenedor.
  2. Reproducibilidad: Garantiza que el entorno de desarrollo sea consistente con el de producción.
  3. Escalabilidad: Permite escalar servicios fácilmente con un solo comando.
  4. Portabilidad: Facilita el traslado de aplicaciones entre diferentes entornos.

Instalación de Docker Compose

Docker Compose se instala junto con Docker Desktop en Windows y macOS. En Linux, puedes instalar Docker Compose manualmente.

Instalación en Linux

sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Verificación de la Instalación

Para verificar que Docker Compose se ha instalado correctamente, ejecuta:

docker-compose --version

Conceptos Clave de Docker Compose

Servicios

Un servicio define un contenedor Docker que forma parte de tu aplicación. Cada servicio se define en el archivo docker-compose.yml y puede tener configuraciones específicas como la imagen Docker a usar, los puertos a exponer, volúmenes, etc.

Volúmenes

Los volúmenes se utilizan para persistir datos generados por y usados en contenedores Docker. En Docker Compose, puedes definir volúmenes que serán compartidos entre servicios.

Redes

Docker Compose permite definir redes personalizadas para que los servicios puedan comunicarse entre sí. Por defecto, Docker Compose crea una red para cada aplicación y conecta todos los servicios a esta red.

Estructura de un Archivo docker-compose.yml

Un archivo docker-compose.yml típico tiene la siguiente estructura:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

Explicación del Ejemplo

  • version: Especifica la versión del formato de archivo de Docker Compose.
  • services: Define los servicios que componen tu aplicación.
    • web: Un servicio que usa la imagen nginx y expone el puerto 80.
    • db: Un servicio que usa la imagen postgres y establece una variable de entorno POSTGRES_PASSWORD.

Comandos Básicos de Docker Compose

Levantar Servicios

Para levantar los servicios definidos en el archivo docker-compose.yml, usa:

docker-compose up

Detener Servicios

Para detener los servicios, usa:

docker-compose down

Escalar Servicios

Para escalar un servicio específico, usa:

docker-compose up --scale web=3

Este comando levantará tres instancias del servicio web.

Ejercicio Práctico

Objetivo

Crear un archivo docker-compose.yml que defina una aplicación simple con un servidor web y una base de datos.

Pasos

  1. Crea un directorio para tu proyecto y navega a él.
  2. Crea un archivo docker-compose.yml con el siguiente contenido:
version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
  1. Levanta los servicios usando el comando docker-compose up.
  2. Verifica que el servidor web está corriendo accediendo a http://localhost en tu navegador.

Solución

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

Conclusión

En esta sección, hemos introducido Docker Compose, una herramienta esencial para gestionar aplicaciones multi-contenedor. Aprendimos sobre sus beneficios, cómo instalarlo, y los conceptos clave como servicios, volúmenes y redes. También vimos la estructura básica de un archivo docker-compose.yml y algunos comandos esenciales. En la próxima sección, profundizaremos en cómo definir servicios en Docker Compose.

© Copyright 2024. Todos los derechos reservados