⚙️ Docker Compose
✅ ¿Qué es Docker Compose?
Docker Compose es una herramienta que permite que múltiples contenedores o aplicaciones interactúen entre sí fácilmente dentro de un mismo entorno, tratándolos como una sola aplicación. Funciona a través de un único archivo llamado docker-compose.yml, en el que puedes definir, configurar y ejecutar todos los servicios necesarios para tu proyecto. Es especialmente útil cuando necesitas que varios componentes —como una aplicación web y una base de datos— trabajen juntos de forma coordinada y automatizada.
🚨 ¿Por qué usar Docker Compose?
-
Automatiza la creación, configuración y conexión de varios contenedores.
-
Ahorra tiempo evitando tener que ejecutar manualmente
docker runpara cada uno. -
Todo está definido en un solo archivo:
docker-compose.yml. -
Hace tu aplicación portable y fácil de compartir.
🧱 Estructura del docker-compose.yml (Instrucciones)
Aquí tienes una tabla con las instrucciones más comunes que se usan en un archivo docker-compose.yml:
| Instrucción | Explicación | Ejemplo |
|---|---|---|
version |
Define la versión del archivo Compose. | '3.3' |
services |
Agrupa todos los contenedores (servicios). | services: |
name (personalizado) |
Nombre de cada servicio/contenedor. | webserver, database |
build |
Ruta donde está el Dockerfile. (Usas esto o image) |
./webserver |
image |
Imagen a usar para el contenedor. (Usas esto o build) |
mysql:latest |
ports |
Mapea puertos del host al contenedor. | '80:80' |
volumes |
Monta carpetas del host dentro del contenedor. | './webserver:/var/www/html' |
environment |
Variables de entorno (útil para configuraciones como contraseñas). | MYSQL_ROOT_PASSWORD=helloworld |
networks |
Redes a las que pertenece el contenedor. | ecommerce |
⚠️ YAML requiere buena indentación (usa 2 espacios, sin tabs).
📄 **Estructura básica de un `docker-compose.yml
`**
version: '3.3' # Versión de Docker Compose
services:
# Aquí van todos los contenedores (servicios)
web:
build: ./web # Ruta al Dockerfile del contenedor web
ports:
- "80:80"
networks:
- ecommerce
database:
image: mysql:latest # Imagen oficial de MySQL
environment:
- MYSQL_DATABASE=ecommerce
- MYSQL_USERNAME=root
- MYSQL_ROOT_PASSWORD=helloworld
networks:
- ecommerce
networks:
ecommerce: # Red interna para que los servicios se comuniquen
📁 Estructura de carpetas:
📁 proyecto/
├── docker-compose.yml
└── web/
└── Dockerfile
🛠️ Comandos útiles de Docker Compose
| Comando | Descripción |
|---|---|
docker-compose up |
Crea y levanta todos los contenedores. |
docker-compose down |
Detiene y elimina contenedores/redes. |
docker-compose start |
Inicia contenedores ya creados. |
docker-compose stop |
Detiene contenedores sin eliminarlos. |
docker-compose build |
Solo construye las imágenes, sin levantarlas. |
💡 Usa -d para levantar en segundo plano: docker-compose up -d |