Herramientas de usuario

Herramientas del sitio


clase:daw:daw:1eval:tema04.b

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
clase:daw:daw:1eval:tema04.b [2026/10/16 17:15] – --no-cache sin conversión tipográfica claudeclase:daw:daw:1eval:tema04.b [2026/10/28 09:26] (actual) – Movido a clase:daw:daw:1eval:tema05 claude
Línea 1: Línea 1:
-===== 4.b Despliegue avanzado en Servidor: Docker Compose ===== 
-Docker Compose es una herramienta que permite definir y administrar aplicaciones Docker de múltiples contenedores. Utiliza un archivo [[https://es.wikipedia.org/wiki/YAML|YAML]] para configurar los servicios, las redes y los volúmenes, facilitando la definición y el despliegue de aplicaciones complejas. 
- 
-==== Estructura Básica de un archivo docker-compose.yml ==== 
- 
-Un archivo ''docker-compose.yml'' define la configuración de una aplicación multi-contenedor. Aquí se presentan las secciones principales: 
- 
-<sxh> 
-services:  
-  nombre_contenedor_1: 
-    image: imagen_servicio1 
-    restart: opciones si se reinicia el servidor 
-    hostname: nombre del host  
-    volumes: 
-      - /ruta/host:/ruta/contenedor 
-    ports: 
-      - "puerto_host:puerto_contenedor" 
-    environment: 
-      - VARIABLE=valor 
-    tty: true 
-    stdin_open: true 
-    pull_policy: never 
- 
-  nombre_contenedor_2: 
-    # Configuración del segundo servicio 
-</sxh> 
- 
- 
-==== Comandos Básicos de Docker Compose ==== 
- 
-  - Iniciar la aplicación basada en la configuración de ''docker-compose.yml''. 
- 
-<sxh bash> 
-docker compose up -d 
-</sxh> 
- 
-  - Detener y eliminar los contenedores definidos en el archivo ''docker-compose.yml''. 
- 
-<sxh bash> 
-docker compose down 
-</sxh> 
- 
-- Muestra el estado de los contenedores definidos en el archivo ''docker-compose.yml''. 
- 
-<sxh bash> 
-docker compose ps 
-</sxh> 
- 
-==== Ejemplo de Uso ==== 
- 
-Supongamos un archivo ''docker-compose.yml'' para una aplicación web con un servicio de frontend y otro de base de datos: 
- 
-<sxh yaml> 
- 
-services: 
-  peliculas_java: 
-    image: temurin_peliculas 
-    restart: always 
-    hostname: peliculas_java 
-    volumes: 
-      - /opt/peliculas/target:/opt/app 
-    ports: 
-      - "80:8080" 
-  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 
-</sxh> 
- 
-Para iniciar esta aplicación, ejecutamos: 
- 
-<sxh> 
-docker compose up -d 
-</sxh> 
- 
-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: [[https://it-tools.tech/docker-run-to-docker-compose-converter]]</note> 
- 
-==== Compose build ==== 
-Hemos visto que con ''docker compose up'' es como hacer un ''docker container run''. Pues resulta que también podemos compilar las imágenes antes de levantar los contenedores con: 
- 
-<sxh bash> 
-docker compose build --no-cache 
-</sxh> 
- 
-Pero para ello hay que modificar el ''docker-compose.yml'' añadiendo el fichero ''Dockerfile'' a usar y la carpeta de donde podría copiar los ficheros. 
- 
-<sxh yaml> 
-services: 
-  peliculas_java: 
-    build: 
-      context: . 
-      dockerfile: Dockerfile.tienda-back 
-    restart: always 
-    hostname: peliculas_java 
-    volumes: 
-      - /opt/peliculas/target:/opt/app 
-    ports: 
-      - "80:8080" 
-</sxh> 
- 
-==== La caché de build ==== 
-Docker guarda en una caché el resultado de cada orden de cada build, **también con ''%%--no-cache%%''**: esa opción solo hace que no se reutilice. Así que cada ''%%build --no-cache%%'' añade a la caché una copia entera de la imagen, y Docker no la recorta hasta que queda menos del 20% del disco libre. En un servidor en el que construyen muchos alumnos hay que limpiarla. 
- 
-  * Ver cuánto ocupa la caché de build: 
-<sxh bash> 
-docker buildx du 
-</sxh> 
- 
-  * Dejarla en 20 GB como mucho, borrando lo más antiguo: 
-<sxh bash> 
-docker buildx prune -f --max-used-space 20GB 
-</sxh> 
- 
-  * Borrar toda la caché de build: 
-<sxh bash> 
-docker buildx prune -a -f 
-</sxh> 
- 
-<note tip> 
-En el servidor, que lo haga ''cron'' cada noche junto con el ''docker image prune -f'' de las imágenes //dangling//. En el fichero ''/etc/cron.d/docker-limpieza'': 
-<sxh> 
-0 4 * * * root docker buildx prune -f --max-used-space 20GB && docker image prune -f 
-</sxh> 
-</note> 
- 
  
clase/daw/daw/1eval/tema04.b.1792163719.txt.gz · Última modificación: por claude