Docker

Docker

Tutorial Docker: Creación de archivos Docker Compose

Docker Compose crear archivos: configuración. Aprende a crear y configurar archivos de Docker Compose para múltiples servicios con ejemplos prácticos.

Docker Compose es una herramienta que facilita el despliegue de aplicaciones multi-contenedor en Docker. 

Permite definir y correr aplicaciones compuestas por varios contenedores. Utiliza archivos YAML para configurar los servicios de la aplicación, lo que permite al usuario definir, en un solo archivo, todos los aspectos relacionados con el entorno de ejecución de una aplicación, incluyendo la construcción de imágenes Docker personalizadas, volúmenes, puertos, y otros servicios necesarios.

Estructura de un archivo Docker Compose

Docker Compose se centra en la “orquestación” de contenedores, es decir, en la gestión automatizada de múltiples contenedores de Docker que constituyen una aplicación. 

Un archivo Docker Compose, generalmente nombrado docker-compose.yml, sigue una estructura definida en formato YAML basada en tres conceptos clave: servicios, redes y volúmenes.

  • Servicios (services): Define cómo se deben construir e iniciar los contenedores Docker. Cada servicio puede estar basado en una imagen Docker existente o puede construir una imagen personalizada basada en un Dockerfile.
  • Volúmenes (volumes): Gestiona el almacenamiento persistente de datos para contenedores, permitiendo que los datos sobrevivan incluso cuando los contenedores son eliminados. Deben declararse como volumes, y entonces podrán ser utilizados en un servicio.
  • Redes (networks): Permite definir redes personalizadas para el aislamiento y la intercomunicación entre contenedores. Deben declararse como networks, y entonces podrán ser utilizados en un servicio.

Ejemplo de docker-compose.yml:

version: '3.8' # Define la versión de Docker Compose utilizada
services:
  mi_servicio: # Nombre del servicio (identificador de libre elección)
    image: mi_imagen:latest # Nombre de la imagen Docker a utilizar
    build: . # Opción para construir la imagen Docker desde un Dockerfile en el directorio actual
    ports:
      - "80:80" # Mapea el puerto 80 del contenedor al puerto 80 del host
    volumes:
      - mi_volumen:/ruta/en/contenedor # Monta un volumen para persistencia de datos
    environment:
      VARIABLE_ENTORNO: valor # Define variables de entorno para el contenedor

volumes:
  mi_volumen: # Define un volumen persistente que puede ser utilizado por los servicios

networks:
  mi_red: # Opcional: define una red personalizada para la comunicación entre servicios

En este caso, el volumen mi_volumen y la red mi_red serían creados por Docker si no existen.

Uso de Docker Compose

Una vez se tiene el archivo docker-compose.yml que describa los servicios, redes y volúmenes requeridos, se utilizan comandos de Docker Compose para gestionar la aplicación:

  • docker-compose up: Crea e inicia todos los servicios definidos en el archivo docker-compose.yml. Si se utiliza la opción -d, los servicios se iniciarán en segundo plano.
  • docker-compose ps: Muestra el estado de todos los contenedores que se definen en el archivo.
  • docker-compose down: Detiene y elimina todos los contenedores, redes y volúmenes definidos en el archivo.

Ejemplo de uso

Supongamos que tenemos una aplicación web simple contenida en una imagen de Docker llamada mi_app_web:latest. Esta aplicación necesita exponer el puerto 80 y requiere de un volumen para persistir datos. El archivo docker-compose.yml para este escenario sería:

version: '3.8'
services:
  web:
    image: mi_app_web:latest
    ports:
      - "80:80"
    volumes:
      - data_vol:/var/lib/mi_app_data

volumes:
  data_vol:

En este caso, se define un servicio web que utiliza la imagen mi_app_web:latest. El puerto 80 del contenedor se mapea al puerto 80 del host, y se define un volumen llamado data_vol (se creará si no existe) para persistir datos en la ruta /var/lib/mi_app_data dentro del contenedor.

A partir de Docker Compose versión 1.27.0, se recomienda utilizar la especificación Compose sin especificar una versión del archivo docker-compose.yml. Esto permite a los usuarios aprovechar automáticamente las últimas características y mejoras sin necesidad de ajustar la versión en sus archivos Compose. La especificación Compose está diseñada para ser compatible hacia adelante, lo que significa que los archivos deberían ser compatibles con futuras versiones del formato.

Certifícate en Docker con CertiDevs PLUS

Ejercicios de esta lección Creación de archivos Docker Compose

Evalúa tus conocimientos de esta lección Creación de archivos Docker Compose con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Docker

Accede a todas las lecciones de Docker y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Docker

Supera todos los ejercicios de programación del curso de Docker y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el propósito y las capacidades de Docker Compose como herramienta de orquestación de contenedores.
  2. Aprender a definir y configurar servicios, volúmenes y redes en un archivo docker-compose.yml.
  3. Adquirir habilidad en el uso de comandos de Docker Compose para gestionar aplicaciones multi-contenedor.