Docker: Docker Compose

Docker Compose facilita la gestión de aplicaciones multicontenedor en Docker. Aprende su configuración y uso avanzado en este módulo.

Docker Compose es una herramienta clave en el ecosistema Docker, diseñada para simplificar el proceso de definir y gestionar aplicaciones multicontenedor. En este módulo, exploraremos cómo configurar y utilizar Docker Compose para optimizar tu flujo de trabajo.

Introducción a Docker Compose

Docker Compose permite definir y ejecutar aplicaciones multicontenedor con un solo comando. Utiliza un archivo YAML para configurar los servicios de tu aplicación. Con Docker Compose, puedes gestionar contenedores de manera eficiente, escalándolos y actualizándolos según sea necesario.

Instalación de Docker Compose

Para instalar Docker Compose, sigue estos pasos:

  1. Descarga la versión más reciente:
   sudo curl -L "https://github.com/docker/compose/releases/download/v2.0.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. Aplica permisos ejecutables al binario:
   sudo chmod +x /usr/local/bin/docker-compose
  1. Verifica la instalación:
   docker-compose --version

Creación de un archivo docker-compose.yml

El archivo docker-compose.yml es el corazón de Docker Compose. Define los servicios que componen tu aplicación. A continuación, un ejemplo básico:

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: mysql:8.4.2
    environment:
      MYSQL_ROOT_PASSWORD: example

Explicación del archivo

  • version: Especifica la versión de Compose.
  • services: Define los contenedores que se utilizarán.
  • web: Servicio que utiliza la imagen de Nginx.
  • db: Servicio que utiliza la imagen de MySQL con una variable de entorno para la contraseña de root.

Comandos básicos de Docker Compose

  1. Iniciar los servicios:
   docker-compose up
  1. Iniciar los servicios en segundo plano:
   docker-compose up -d
  1. Detener los servicios:
   docker-compose down
  1. Escalar un servicio:
   docker-compose up -d --scale web=3

Uso avanzado de Docker Compose

Volúmenes y redes

Docker Compose permite definir volúmenes y redes para mejorar la persistencia y la comunicación entre contenedores.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_data:/var/www/html
    networks:
      - app_network
  db:
    image: mysql:8.4.2
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - app_network

volumes:
  web_data:
  db_data:

networks:
  app_network:

Variables de entorno

Puedes utilizar un archivo .env para gestionar variables de entorno:

MYSQL_ROOT_PASSWORD=example

Luego, referenciarlas en el archivo docker-compose.yml:

version: '3.8'
services:
  db:
    image: mysql:8.4.2
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
Certifícate en Docker con CertiDevs PLUS

Lecciones de este módulo de Docker

Lecciones de programación del módulo Docker Compose del curso de Docker.

Ejercicios de programación en este módulo de Docker

Evalúa tus conocimientos en Docker Compose con ejercicios de programación Docker Compose de tipo Test, Puzzle, Código y Proyecto con VSCode.