
Cómo Dockerizar una Aplicación Angular con Nginx
En este artículo, exploraremos cómo dockerizar una aplicación Angular utilizando un Dockerfile multi-etapa y servirlo con Nginx, optimizando el proceso para producción .
1. Crear una Aplicación Angular
Primero, necesitas una aplicación Angular básica. Si ya tienes una, puedes omitir este paso. Si no, ejecuta:
ng new sample-angular-app cd sample-angular-app ng serve
Esto genera un proyecto y lo ejecuta en http://localhost:4200. Asegúrate de tener Node.js y Angular CLI instalados .
2. Configurar el Dockerfile Multi-Etapa
El Dockerfile define dos etapas: una para construir la aplicación y otra para servirla con Nginx.
Ejemplo de Dockerfile
# ---------------------------- # Etapa 1: Construir la aplicación # ---------------------------- FROM node:latest as build WORKDIR /usr/local/app COPY ./ /usr/local/app/ RUN npm install RUN npm run build # ---------------------------- # Etapa 2: Servir con Nginx # ---------------------------- FROM nginx:latest COPY --from=build /usr/local/app/dist/sample-angular-app /usr/share/nginx/html EXPOSE 80
Explicación
- Etapa 1 (Build):
- Usa una imagen de Node.js para instalar dependencias y compilar el proyecto .
- COPY . . copia todos los archivos del proyecto al contenedor.
- npm run build genera los archivos estáticos en la carpeta dist/.
- Etapa 2 (Run):
- Utiliza una imagen de Nginx para servir los archivos compilados.
- COPY --from=build transfiere los archivos de la etapa de construcción a la carpeta de Nginx .
- EXPOSE 80 indica que el contenedor escucha en el puerto 80.
3. Configurar Nginx
Crea un archivo nginx.conf en la raíz del proyecto para evitar errores de rutas en Angular:
server { listen 80; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; } }
Este archivo asegura que todas las rutas se redirijan a index.html, esencial para aplicaciones de una sola página (SPA) .
4. Construir la Imagen de Docker
Ejecuta desde la raíz del proyecto:
docker build -t mi-app-angular:latest .
- -t etiqueta la imagen (ej: mi-app-angular:latest).
- El . indica que el Dockerfile está en el directorio actual .
Verifica la imagen creada:
docker images
5. Ejecutar el Contenedor
Inicia el contenedor mapeando el puerto 8080 del host al 80 del contenedor:
docker run -d -p 8080:80 mi-app-angular:latest
- -d ejecuta el contenedor en segundo plano.
- -p 8080:80 vincula los puertos .
Verifica el estado del contenedor:
docker ps
Accede a la aplicación en http://localhost:8080.
6. Publicar la Imagen en Docker Hub
Si deseas compartir la imagen:
docker login -u <usuario> docker tag mi-app-angular:latest <usuario>/mi-app-angular:latest docker push <usuario>/mi-app-angular:latest
Conclusión
Dockerizar una aplicación Angular con Nginx simplifica el despliegue en cualquier entorno, asegurando consistencia y portabilidad. Este enfoque multi-etapa reduce el tamaño final de la imagen y optimiza el flujo de trabajo .
Recursos Adicionales:
¡Empieza a containerizar tus proyectos y lleva tu desarrollo al siguiente nivel! 🐳
Deja un comentario: