Docker Compose: Conceptos básicos y uso

Docker Compose es una herramienta poderosa y popular que se utiliza para administrar e implementar aplicaciones basadas en Docker. Le permite definir, configurar y ejecutar varios Docker contenedores como un solo proyecto, lo que simplifica la implementación de aplicaciones y garantiza la coherencia entre los entornos de desarrollo y producción.

A continuación se presentan algunos conceptos y ejemplos de Docker Compose:

Defina el proyecto usando el archivo docker-compose.yml

En el docker-compose.yml archivo, puede definir los servicios requeridos para su aplicación. Por ejemplo, para implementar una aplicación web PHP con una base de datos MySQL, puede definir dos servicios de la siguiente manera:

version: "3"  
services:  
  web:  
    image: php:7.4-apache  
    ports:  
   - "80:80"  
    volumes:  
   - ./app:/var/www/html  
  
  db:  
    image: mysql:5.7  
    environment:  
      MYSQL_ROOT_PASSWORD: password  
      MYSQL_DATABASE: my_database  

En el fragmento de código anterior, definimos dos servicios: web y db. El web servicio utilizará PHP 7.4 image con Apache, escuchará en el puerto 80 y montará el ./app directorio desde el host en el /var/www/html directorio en el container. El db servicio utilizará MySQL 5.7 image y establecerá algunas variables de entorno necesarias para la base de datos.

 

Usando Docker Compose el comando

Una vez que haya definido el proyecto en el docker-compose.yml archivo, puede usar Docker Compose comandos para administrar los servicios.

  • Iniciar el proyecto: docker-compose up

    Este comando iniciará los contenedores para los servicios definidos en el docker-compose.yml archivo.

  • Detener y retirar los contenedores: docker-compose down

    Este comando detiene y elimina todos los contenedores relacionados con el proyecto.

  • Lista de contenedores en ejecución: docker-compose ps

    Este comando mostrará el estado de los contenedores en el proyecto.

  • Ver registros de servicio: docker-compose logs

    Este comando muestra los registros de los servicios en el proyecto.

 

Variables de entorno y personalización

Docker Compose le permite usar variables de entorno para personalizar configuraciones para diferentes entornos, como desarrollo y producción. Puede utilizar variables de entorno en el docker-compose.yml archivo y definir sus valores en .env los archivos correspondientes.

Por ejemplo, si desea definir una variable de entorno para el puerto del web servicio, puede agregar una línea al .env archivo como esta:

WEB_PORT=8080

Luego, en el docker-compose.yml archivo, puede usar esta variable de entorno de esta manera:

version: "3"  
services:  
  web:  
    image: php:7.4-apache  
    ports:  
   - "${WEB_PORT}:80"  
    volumes:  
   - ./app:/var/www/html  

Al ejecutar el docker-compose up comando, el web servicio escuchará en el puerto 8080 en lugar del puerto 80.

 

Integración con Docker Swam

Si desea implementar su aplicación en un entorno distribuido con múltiples nodos, Docker Compose puede integrarse con Docker Swarm. Esto le permite administrar servicios en múltiples nodos en un Docker clúster.

Para usar esta integración, solo necesita agregar las opciones --orchestrate o --with-registry-auth al ejecutar los comandos docker stack deploy o docker-compose up en un Swarm entorno.

 

Docker Compose es una herramienta útil para el desarrollo, prueba e implementación de aplicaciones fácil y eficiente. Minimiza las diferencias entre los entornos de desarrollo y producción, garantiza la coherencia en el proceso de desarrollo de software y mejora la productividad de los equipos de desarrollo.