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.