¿Qué es Docker Compose y cómo se usa?

Contenidos

Docker Compose es una herramienta que puede usar para administrar de forma centralizada las implementaciones de muchos contenedores Docker diferentes. Es una herramienta importante para cualquier aplicación que necesite múltiples microservicios, puesto que posibilita que cada servicio esté fácilmente en un contenedor administrado de forma separada.

¿Qué hace Docker Compose?

Los contenedores Docker se usan para ejecutar aplicaciones en un entorno aislado. En la actualidad es bastante común ver implementaciones de aplicaciones hechas en Docker por los numerosos beneficios que brinda. A pesar de esto, a menudo no es tan simple como ejecutar un solo contenedor. Por lo general, es factible que tenga muchos contenedores que se unen para actuar como un servicio cohesivo compuesto por muchas partes móviles.

Administrar todo esto en el momento de la implementación es complicado, por lo que para limpiarlo, Docker proporciona Docker Compose, una herramienta de configuración que se utiliza para ejecutar varios contenedores al mismo tiempo. Puede establecer toda la configuración en un archivo YAML y después iniciar todos los contenedores con un comando.

En lugar de tener todos sus servicios en un gran contenedor, Docker Compose le posibilita dividirlos en contenedores administrables individualmente. Esto es mejor para la construcción y la implementación, puesto que puede administrarlos todos en bases de código separadas y no es necesario iniciar manualmente cada contenedor individual.

El uso de Docker Compose es un procedimiento de tres pasos:

  • Cree las imágenes de los componentes usando sus Dockerfiles o extráigalas de un registro.
  • Establecer todos los servicios de componentes en un docker-compose.yml expediente.
  • Ejecútelos todos juntos usando el docker-compose CLI.

Docker Compose no es otro tipo de Dockerfile. Aún necesitará crear y publicar sus contenedores Docker usando un Dockerfile. Pero, en lugar de ejecutarlos de forma directa, puede utilizar Docker Compose para administrar la configuración de una implementación de varios contenedores.

¿Cómo se utiliza Docker Compose?

La configuración de un archivo de composición de Docker se realiza en docker-compose.yml. No necesita colocar esto en la raíz de su proyecto como un Dockerfile. En realidad, puede ir a cualquier parte, puesto que no depende de ningún otro código. A pesar de esto, si está compilando las imágenes localmente, deberá ir en una carpeta de proyecto con el código que se está compilando.

Un archivo de configuración de Redactar tendrá un aspecto equivalente al siguiente. Esta configuración ejecuta una instancia de WordPress usando el wordpress contenedor del Docker Hub. A pesar de esto, esto depende de una base de datos MySQL, que además es creada por Docker Compose.

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: rootpasswordchangeme
       MYSQL_DATABASE: wordpress
       MYSQL_USER: usernamechangeme
       MYSQL_PASSWORD: passwordchangeme

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: usernamechangeme
       WORDPRESS_DB_PASSWORD: passwordchangeme
volumes:
    db_data:

Echemos un vistazo al formato de este archivo. Primero, un número de versión, puesto que la sintaxis puede cambiar dependiendo de la versión que estés usando.

A continuación, una lista de servicios. El primero se llama «db» y utiliza la mysql:5.7 contenedor, configurado para reiniciar siempre, y con variables de entorno para configurar la base de datos con un usuario y contraseña. Para mantener los datos en los reinicios, esta imagen se configura con un volumen de Docker montado en el directorio de datos de MySQL.

El otro servicio es «wordpress», que depende del servicio de la base de datos, lo que garantiza que Docker se asegurará de que la base de datos se inicie antes de ejecutarse. Expone el puerto 80 como puerto 8000 y establece algunas variables de entorno para que pueda conectarse a MySQL. Tenga en cuenta que el host de la base de datos está configurado en db:3306, que le dice al contenedor de WordPress que se conecte al servicio «db».

Por último, los volúmenes se definen para almacenamiento persistente. Opcionalmente, puede también definir redes personalizadas para los contenedores. Hay muchas opciones extendidas que puede configurar, por lo que si está buscando hacer algo específico, debe consultar la documentación para Docker Compose.

Una vez configurado, iniciar este servicio es fácil. Simplemente corre docker-compose up, que extraerá todos los contenedores necesarios e iniciará sus servicios.

docker-compose up -d

Y debería ver los servicios que se ejecutan en el sistema con docker ps. Para este caso, verá WordPress funcionando correctamente.

RELACIONADO: Cómo instalar Docker y Docker Compose en Linux

Compilación con Docker Compose

Docker Compose además se puede utilizar dentro de un proyecto de Dockerfile y se puede configurar para compilar y ejecutar una imagen localmente en lugar de extraerla de Docker Hub.

Para hacerlo, simplemente necesita agregar un build sección sobre el servicio. Puede configurar diferentes directorios de contexto, así como diferentes Dockerfiles para diferentes imágenes.

version: "3.8"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
    image: imagename:tag

Para este caso, el image: La variable además está configurada, pero aquí se utiliza para etiquetar la imagen creada por Docker Compose.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.