¿Qué es Docker Compose?

En el ámbito del desarrollo moderno de aplicaciones, Docker Compose se ha convertido en una herramienta indispensable para gestionar entornos multi-contenedor de manera eficiente. Facilitando la orquestación de servicios y la configuración de redes, Docker Compose simplifica enormemente el proceso de desarrollo, pruebas y despliegue de aplicaciones en contenedores. En este artículo, exploraremos paso a paso cómo instalar Docker Compose, configurarlo correctamente y aprovechar al máximo su potencial para crear entornos de desarrollo robustos y escalables. Prepárate para optimizar tu flujo de trabajo con Docker Compose y llevar tus proyectos al siguiente nivel.

Instalar Docker Compose

En primer lugar es primordial haber realizado previamente la instalación de Docker puedes seguir esta guía sobre como hacerlo en Ubuntu 24.4.

Descarga la última versión de Docker Compose del repositorio de GitHub oficial. Ejecuta el siguiente comando en tu terminal:

curl -SL https://github.com/docker/compose/releases/download/v2.28.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

A continuación, otorga permisos de ejecución a Docker Compose:

sudo chmod +x /usr/local/bin/docker-compose

La opción --version te permite comprobar si Compose se ha instalado correctamente.

docker-compose --version

Visualizará un resultado similar a esto:

Output
docker-compose version 2.28.0, build 8a1c60f6

Docker Compose se ha instalado correctamente en su sistema. En la siguiente sección, veremos cómo configurar un archivo docker-compose.yml y obtener un entorno en contenedor listo para usarse con esta herramienta.

Configurar un archivo docker-compose.yml

Para demostrar cómo configurar un archivo docker-compose-yml y trabajar con Docker Compose, crearemos un entorno de servidor web usando la imagen Nginx oficial de Docker Hub, el registro público de Docker. Este entorno en contenedor servirá como archivo HTML estático único.

Comience creando un nuevo directorio en su carpeta de inicio, y luego muévalo a él:

mkdir ~/compose-demo
cd ~/compose-demo

En este directorio, configure una carpeta de aplicaciones que servirá como la raíz del documento para su entorno Nginx:

mkdir app

Usando su editor de texto preferido, cree un nuevo archivo index.html en la carpeta app:

nano app/index.html

Coloque el siguiente contenido en este archivo:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

	<h1>This is a Docker Compose Demo Page.</h1>
	<p>This content is being served by an Nginx container.</p>

</body>
</html>

Guarde y cierre el archivo cuando termine. Si utiliza nano, puede hacerlo pulsando CTRL+XY e INTRO para confirmar.

A continuación, cree el archivo docker-compose.yml:

nano docker-compose.yml

Inserte el siguiente contenido en su archivo docker-compose.yml:

version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

El archivo docker-compose.yml normalmente comienza con la definición de la versión. Esto indicará a Docker Compose qué versión de la configuración estamos usando.

Luego tenemos el bloque services, donde configuramos los servicios que son parte de este entorno. En nuestro caso, tenemos un único servicio llamado web. Este servicio utiliza la imagen nginx:alpine y establece una redirección de puerto con la directiva ports. Todas las solicitudes en el puerto 8000 del equipo host (el sistema desde el cual está ejecutando Docker Compose) serán redirigidas al contenedor web en el puerto 80, donde se ejecutará Nginx.

La directiva volumes creará un volumen compartido entre el equipo host y el contenedor. Esto compartirá la carpeta app local con el contenedor, y el volumen se ubicará en /usr/share/nginx/html dentro del contenedor, que luego sobreescribirá la raíz predeterminada del documento para Nginx.

Guarde y cierre el archivo.

Hemos creado una página demo y un archivo docker-compose.yml para crear un entorno de servidor web en contenedor que lo presentará. En el siguiente paso, abriremos este entorno con Docker Compose.

Ejecutar Docker Compose

Con el archivo docker-compose.yml implementado, ahora podemos ejecutar Docker Compose para mostrar nuestro entorno. El siguiente comando descargará las imágenes Docker necesarias, creará un contenedor para el servicio web y ejecutará el entorno en contenedor en modo segundo plano:

docker-compose up -d

Docker Compose primero buscará la imagen definida en su sistema local, y si no puede encontrar la imagen, descargará la imagen desde Docker Hub. Verá un resultado como este:

Output
Creating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

Su entorno ahora está funcionando en segundo plano. Para verificar que el contenedor está activo, puede ejecutar:

docker-compose ps

Este comando le mostrará información sobre los contenedores en ejecución y su estado, además de cualquier redireccionamiento de puertos en vigor actualmente:

Output
       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
compose-demo_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

Ahora puede acceder a la aplicación demo apuntando su servidor a localhost:8000 si está ejecutando esta demo en su equipo local, o a tu_dominio_o_IP:8000 si está ejecutando esta demo en un servidor remoto.

Verá una página como la siguiente:

El volumen compartido que ha configurado en el archivo docker-compose.yml mantiene los archivos de su carpeta app sincronizados con la raíz del documento del contenedor. Si realiza algún cambio al archivo index.html, serán recogidos automáicamente por el contenedor y se reflejarán en su navegador cuando vuelva a cargar la página.

Pues con este punto finalizamos la instalación de Docker Compose y como usarlo. Estad atentos a próximos posts ya que serán bastante interesantes.

Comentarios

No hay comentarios todavía. ¿Tienes algúna duda? Deja un comentario.

Deja una respuesta

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