Sobes.tech
Junior

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

sobes.tech AI

Respuesta de la IA

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Permite describir los servicios de la aplicación, sus dependencias y configuración en un solo archivo (generalmente docker-compose.yml). Luego, con un solo comando, se pueden iniciar todos los servicios definidos.

Uso de Docker Compose:

  1. Definición de servicios: En el archivo docker-compose.yml se describen los diferentes componentes de la aplicación como servicios (por ejemplo, servidor web, base de datos, API backend). Para cada servicio, se especifica la imagen de Docker, puertos, volúmenes, variables de entorno y dependencias de otros servicios.

    # ejemplo de archivo docker-compose.yml
    version: '3.8'
    services:
      webapp:
        image: my-webapp
        ports:
          - "80:80"
        volumes:
          - .:/app
      database:
        image: postgres:13
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
    
  2. Ejecutar la aplicación: El comando docker-compose up construye, crea y lanza todos los servicios descritos en el archivo docker-compose.yml.

    # lanzar todos los servicios en segundo plano
    docker-compose up -d
    
  3. Detener la aplicación: El comando docker-compose down detiene y elimina los contenedores, redes y volúmenes creados por docker-compose up.

    # detener y eliminar servicios
    docker-compose down
    

Ventajas principales:

  • Simplificación de la configuración: Toda la configuración de la aplicación multicontenedor está concentrada en un solo archivo.
  • Reproducibilidad: Es fácil configurar y lanzar la aplicación en un entorno idéntico en diferentes máquinas.
  • Gestión del ciclo de vida: Comandos sencillos para lanzar, detener y reiniciar todos los servicios.
  • Pruebas: Es conveniente levantar entornos de prueba con servicios dependientes (bases de datos, colas de mensajes, etc.).

En QA, Docker Compose se usa frecuentemente para desplegar rápidamente entornos de prueba, simular infraestructuras complejas y garantizar la predictibilidad del entorno de pruebas.