clase:daw:daw:tema05
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| clase:daw:daw:tema05 [2026/10/28 09:57] – borrado - editor externo (Fecha desconocida) 127.0.0.1 | clase:daw:daw:tema05 [2026/10/28 10:22] (actual) – Figura compose.yaml → docker compose up → imagen → contenedor al principio del tema claude | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 5. Docker: Compose ====== | ||
| + | Docker Compose es una herramienta que permite definir y administrar aplicaciones Docker de múltiples contenedores. Utiliza un archivo [[https:// | ||
| + | |||
| + | Con Compose las órdenes de [[clase: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Estructura Básica de un archivo docker-compose.yml ===== | ||
| + | |||
| + | Un archivo '' | ||
| + | |||
| + | <sxh> | ||
| + | services: | ||
| + | nombre_contenedor_1: | ||
| + | image: imagen_servicio1 | ||
| + | restart: opciones si se reinicia el servidor | ||
| + | hostname: nombre del host | ||
| + | volumes: | ||
| + | - / | ||
| + | ports: | ||
| + | - " | ||
| + | environment: | ||
| + | - VARIABLE=valor | ||
| + | tty: true | ||
| + | stdin_open: true | ||
| + | pull_policy: | ||
| + | |||
| + | nombre_contenedor_2: | ||
| + | # Configuración del segundo servicio | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Comandos Básicos de Docker Compose ===== | ||
| + | |||
| + | - Iniciar la aplicación basada en la configuración de '' | ||
| + | |||
| + | <sxh bash> | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | - Detener y eliminar los contenedores definidos en el archivo '' | ||
| + | |||
| + | <sxh bash> | ||
| + | docker compose down | ||
| + | </ | ||
| + | |||
| + | - Muestra el estado de los contenedores definidos en el archivo '' | ||
| + | |||
| + | <sxh bash> | ||
| + | docker compose ps | ||
| + | </ | ||
| + | |||
| + | ==== Ejemplo de Uso ==== | ||
| + | |||
| + | Supongamos un archivo '' | ||
| + | |||
| + | <sxh yaml> | ||
| + | |||
| + | services: | ||
| + | peliculas_java: | ||
| + | image: temurin_peliculas | ||
| + | restart: always | ||
| + | hostname: peliculas_java | ||
| + | volumes: | ||
| + | - / | ||
| + | ports: | ||
| + | - " | ||
| + | peliculas_mysql: | ||
| + | image: mysql:8.3.0 | ||
| + | restart: always | ||
| + | hostname: peliculas_java | ||
| + | environment: | ||
| + | - MYSQL_ROOT_PASSWORD=peliculas | ||
| + | - MYSQL_DATABASE=peliculas | ||
| + | - MYSQL_USER=peliculas | ||
| + | - MYSQL_PASSWORD=peliculas | ||
| + | </ | ||
| + | |||
| + | Para iniciar esta aplicación, | ||
| + | |||
| + | <sxh> | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | Esto levantará los contenedores de frontend y base de datos con la configuración especificada. | ||
| + | |||
| + | Docker Compose simplifica la gestión de aplicaciones Docker complejas, permitiendo definir y coordinar múltiples servicios con facilidad. | ||
| + | |||
| + | |||
| + | |||
| + | <note tip>Para pasar un script de docker al formato de docker compose se puede usar la herramienta: | ||
| + | |||
| + | ===== Construir las imágenes con Compose ===== | ||
| + | Hemos visto que con '' | ||
| + | |||
| + | <sxh yaml> | ||
| + | services: | ||
| + | peliculas_java: | ||
| + | build: | ||
| + | context: . | ||
| + | dockerfile: Dockerfile.tienda-back | ||
| + | restart: always | ||
| + | hostname: peliculas_java | ||
| + | volumes: | ||
| + | - / | ||
| + | ports: | ||
| + | - " | ||
| + | </ | ||
| + | |||
| + | '' | ||
| + | |||
| + | ===== Reconstruir las imágenes ===== | ||
| + | Cada vez que cambia el código hay que volver a crear las imágenes, y hacerlo sin más tiene tres problemas: | ||
| + | |||
| + | * **Las imágenes viejas llenan el disco**: al reconstruir una imagen con un nombre que ya existe, el nombre pasa a la nueva y la vieja se queda sin nombre, como ''< | ||
| + | * **La caché de build llena el disco**: Docker guarda en una caché el resultado de cada orden del '' | ||
| + | * **La imagen no tiene el código nuevo**: '' | ||
| + | |||
| + | Los tres se resuelven bajando todo, borrando las imágenes y la caché y volviendo a levantar: | ||
| + | |||
| + | <sxh bash> | ||
| + | docker compose down --rmi local | ||
| + | docker buildx prune -f | ||
| + | docker compose up -d | ||
| + | </ | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | < | ||
| + | '' | ||
| + | </ | ||
