Docker Compose: la herramienta todo en uno

Clase 23 de 33Curso de Docker

Contenido del curso

Resumen

¿Qué es Docker Compose y cómo puede simplificar tu flujo de trabajo?

Imagínate la complejidad de tener que conectar manualmente cada contenedor y establecer configuraciones detalladas para aplicaciones multinivel. Todo este proceso puede llegar a ser agotador. Aquí es donde Docker Compose se convierte en tu aliado ideal, simplificando la ejecución y configuración de múltiples servicios. Esta herramienta te permite definir de forma declarativa la arquitectura de tu aplicación, eliminando la necesidad de ejecutar comandos Docker tediosamente.

Docker Compose se integra de serie en Docker Desktop para Windows y Mac, pero en Linux requiere instalación manual. Una vez instalado, podrás configurar de manera eficiente la comunicación entre los contenedores, el manejo de archivos y otros elementos de los que normalmente te encargarías por separado.

¿Cómo funciona un archivo Docker Compose?

El archivo docker-compose.yml es el núcleo de Docker Compose. Este archivo se escribe en YAML, un formato legible y declarativo, esencialmente una extensión de JSON:

  1. Versión del archivo Compose: Es crucial especificar la versión correcta, ya que define qué funcionalidades puedes utilizar entre diferentes versiones de Docker Compose. Actualmente, la versión 3.8 es la más reciente.

  2. Servicios (services): Aquí defines cada componente de tu aplicación. Por ejemplo, puedes tener un servicio app para la lógica de la aplicación y otro servicio db para la base de datos. Estos servicios son como contenedores pero con más capacidades, como la escalabilidad y la reutilización de imágenes.

    • Utiliza la palabra clave image para especificar la imagen del contenedor.
    • Define variables de entorno mediante environment.
    • Usa depends_on para establecer dependencias entre servicios, asegurando el correcto orden de inicio.
    • Configura puertos de la misma manera que lo harías con comandos Docker directos.

¿Cómo ejecutar y administrar servicios con Docker Compose?

Una vez que tienes tu archivo docker-compose.yml configurado, puedes comenzar a ejecutar y gestionar tus servicios de manera centralizada.

Ejecución de servicios con Docker Compose

Con el comando docker-compose up, Docker Compose creará y ejecutará los servicios definidos en el archivo de configuración:

docker-compose up # Muestra logs de todos los servicios docker-compose up -d # Corre los servicios en el segundo plano

Este comando genera una red para garantizar que los servicios puedan comunicarse entre sí. Además, asigna nombres únicos para evitar conflictos.

Gestión de puertos y resolución de conflictos

Al ejecutar servicios, es posible encontrarse con que un puerto ya está ocupado. Por ejemplo, si el puerto 3000 ya está en uso, Docker Compose no podrá iniciar otro servicio en el mismo puerto hasta que liberes el espacio.

Para solucionar esto:

  • Detén y elimina contenedores existentes que pudieran estar utilizando el puerto.
docker rm -f nombre_del_contenedor # Por ejemplo, docker rm -f app

Control de servicios y eliminación

Puedes parar y quitar servicios con facilidad y de forma centralizada:

docker-compose down # Detiene y elimina contenedores, redes y volúmenes asociados.

Conclusión

Docker Compose revoluciona el modo en que manejamos aplicaciones con múltiples componentes, permitiéndonos enfoque y productividad al eliminar la sobrecarga de comandos individuales. Anímate a explorar más allá de lo básico y descubre cómo esta herramienta puede optimizar tus proyectos.

Recuerda que el potencial de Docker Compose no termina aquí. En futuras lecciones, profundizaremos en funcionalidades avanzadas y en cómo maximizar el uso de esta herramienta para tu flujo de trabajo. ¡Sigue aprendiendo y explorando las posibilidades que te ofrece Docker Compose!