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

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.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies