¡Esta es una revisión vieja del documento!
El proyecto de Angular debe tener configurado el despliegue continuo con Docker.
Primeros Pasos
1. Modificación del Dockerfile de la construcción del Proyecto: Ubicar el archivo Dockerfile y agregar la opción –output-hashing=all en la misma línea donde se ejecuta la construcción del proyecto.
Nuestra línea de código debería quedar así:
RUN npm run build:${TYPE} –output-hashing=all
2. Creación del Script para Renombrar index.html: Crear un archivo de Node.js llamado `rename_index_html.js`, que se encargue de renombrar el index.html con un nombre basado en un timestamp.
Esto obligará al navegador a tomar los archivos del servidor en lugar de la caché, ya que el nombre del archivo cambiará en cada despliegue.
Código del archivo rename_index_html.js (guardar en la raíz del proyecto):
const fs = require('fs');
const path = require('path');
const distPath = path.join(__dirname, 'dist', 'nombreProyectoAngular', 'browser');
const indexPath = path.join(distPath, 'index.html');
const timestamp = Date.now();
const newIndexName = `index.${timestamp}.html`;
const newIndexPath = path.join(distPath, newIndexName);
fs.renameSync(indexPath, newIndexPath);
console.log(`Renamed index.html to ${newIndexName}`);
3. Agregar la Ejecución del Script en el Dockerfile después de la línea que construye el proyecto en el archivo Dockerfile, agregar la ejecución del script para renombrar el index.html:
RUN node rename_index_html.js
4. Ajuste de Nginx en el Dockerfile En el mismo archivo Dockerfile, después de la línea:
COPY default.conf /etc/nginx/conf.d/default.conf
Agregar el siguiente código para que Nginx sirva el archivo index.html sin importar su nombre:
RUN HTML_FILE=$(find /usr/share/nginx/html -type f -name “index*.html” | head -n 1 | xargs -I {} basename {}) &&\
echo “Encontrado: $HTML_FILE” && \
sed -i “s/index\.html/$HTML_FILE/g” /etc/nginx/conf.d/default.conf
Este comando encuentra el archivo index.html generado por Angular, captura su nombre dinámico y lo reemplaza en la configuración de Nginx.
Estos son los cuatro pasos necesarios para evitar que el navegador del cliente almacene en caché el index.html y garantizar que siempre tome la versión más reciente del servidor en cada despliegue.
Por último, el archivo Dockerfile debería verse similar a la siguiente imagen: