Docker Compose explicado de forma sencilla

Docker Compose explicado de forma sencilla

•

¿Qué es Docker Compose?

Docker Compose es una herramienta que se basa en el concepto de definir una aplicación que consiste en múltiplos contenedores. Esto se logra a través de un archivo YAML, donde se especifican los servicios, redes y volúmenes requeridos. Cada aplicación se configura en un solo archivo, que generalmente se llama docker-compose.yml.

Ventajas de usar Docker Compose

  • Facilidad de configuración: Permite definir múltiples contenedores y servicios en un único archivo.
  • Consistencia: Asegura que el mismo entorno se utilice en desarrollo, pruebas y producción.
  • Escalabilidad: Facilita la creación y gestión de aplicaciones que requieren varios componentes trabajando juntos.

Estructura básica de un archivo docker-compose.yml

El formato de un archivo docker-compose.yml se basa en la sintaxis YAML. Aquí tienes un ejemplo sencillo que ejecuta una aplicación web con un contenedor para la aplicación y otro para la base de datos:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_DB: exampledb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

Cómo iniciar Docker Compose

Iniciar una aplicación con Docker Compose es sencillo. Primero, asegúrate de que tu Docker esté instalado y en ejecución. Luego, sigue estos pasos:

  1. Crea un archivo llamado docker-compose.yml en tu directorio de proyecto.
  2. Define los servicios y configuraciones necesarias.
  3. Desde la terminal, navega al directorio donde se encuentra tu archivo docker-compose.yml.
  4. Ejecuta el siguiente comando:
docker-compose up

Este comando descargará las imágenes necesarias y levantará los contenedores especificados en el archivo.

Comandos útiles de Docker Compose

Además de docker-compose up, hay otros comandos importantes que facilitan el trabajo con Docker Compose:

  • docker-compose down: Detiene y elimina todos los contenedores definidos en el archivo.
  • docker-compose ps: Muestra el estado de los contenedores en funcionamiento.
  • docker-compose logs: Proporciona los registros de salida de los servicios.

Manejo de volúmenes y redes en Docker Compose

Docker Compose permite gestionar volúmenes y redes de manera efectiva. Puedes definir volúmenes para persistir datos y redes para que los contenedores se comuniquen entre sí.

Ejemplo de un archivo con volúmenes y redes

version: '3'
services:
  web:
    image: nginx
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - frontend
  db:
    image: postgres
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - backend

networks:
  frontend:
  backend:

volumes:
  pgdata:

Ejemplo práctico: Desplegando una aplicación simple

Veamos un ejemplo más elaborado que incluye una aplicación web y una base de datos:

version: '3'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:11
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

En este ejemplo, la aplicación se construye a partir de un Dockerfile y depende de una base de datos Postgres que se levanta automáticamente.

Conclusiones

Docker Compose es una herramienta poderosa para el manejo de aplicaciones multicontenedor. Proporciona una forma estructurada y sencilla de configurar, ejecutar y gestionar contenedores de Docker. Al facilitar el desarrollo y la orquestación de múltiples servicios, se convierte en un recurso invaluable para los desarrolladores y equipos de DevOps.

Fuentes y lecturas recomendadas

Xose de la Paz

Más de 20 años transformando pasión en profesión. Experto en desarrollo Full Stack con una visión integral que abarca desde la gestión de servidores y redes hasta el diseño de interfaz. Soy un "todoterreno" tecnológico que cree en el aprendizaje continuo y la visión global de los proyectos. Entre despliegue y despliegue, me pierdo por el mundo con mi cámara al hombro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.