Dockerfile MultiStage en Nodejs

dockerfile multistage

Dockerfile MultiStage en Nodejs

Al comienzo de este pequeño ensayo centrado en Dockerfile MultiStage, algunos requisitos previos son muy importantes.


Como paso de introducción

Docker y en realidad su nivel medio de conocimiento frente a la necesidad de múltiples etapas como un asunto importante en la producción de la aplicación

Virtualización

A primera vista, puede ver esta declaración en la mayoría de las herramientas de virtualización. Ejecute sistemas operativos para cualquier máquina, en cualquier arquitectura compatible. Sucede algo fascinante cuando se trata de muchas infraestructuras, herramientas y restricciones diferentes que son completamente incongruentes o que necesitan zapatos duros para configurarlas para implementar la armonía y la sincronización del servicio.

Básicamente, las máquinas virtuales abren un nuevo piso para que el ingeniero ejecute el proceso en modo completamente aislado sin ningún tipo de acoplamiento con el sistema operativo principal. Por lo tanto, esta excelente y práctica manera, independientemente de la antigüedad de la aplicación heredada o las dependencias y su actualización, restringe automáticamente al desarrollador a un comportamiento estable con casi cero pausas en el ciclo de vida del desarrollo de la aplicación. Algunas utilizaciones como QEMU, libvirt, VMware Workstation y muchas más.

Algunos temas como Cómo poner en marcha un proyecto en vm son tendencias que en los últimos años se han visto más probables y presentan el hecho de que la amplia gama de nuevas tecnologías intenta hacer frente a la virtualización.

Era docker y contenedorización

Puedo afirmar con confianza que rara vez sucede, eche un vistazo a los repositorios y no vea Dockerfile allí. Superar los 4,7 millones de Dockerfile disponibles en 2,2 millones de repositorios solo muestra que Docker tiene una amplia aceptación entre las comunidades de programación.

Dockerización en el ecosistema de Nodejs

“¿Por qué a los desarrolladores les encanta Docker?” se puede suponer que la primera pregunta podría hacerse sobre este artículo. Aquí discutamos sobre algunos casos, pero francamente necesitamos una sesión técnica más profunda y más ejemplos, por lo que algo es mejor que nada.

  • Variedad en versión nodejs y sistemas operativos
  • Compartiendo un entorno limpio y bien probado entre todo el equipo técnico
  • Algunos asuntos anteriores están asociados con el proyecto, por ejemplo, construir, pelusa, instalar dependencias y más
  • Optimización de archivos de proyecto que se ejecutan mediante el uso de banderas o comandos personalizados

Aplicación del lado del servidor de Dockerfile MultiStage

El siguiente ejemplo muestra un enfoque simple de dockerización en dos fases.

#
# _ _ _ _ 
#| | (_) | | |
#| |__ _ _ _| | __| |
#| '_ \| | | | | |/ _` |
#| |_) | |_| | | | (_| |
#|_.__/ \__,_|_|_|\__,_|
# 
#
FROM node:18 as build

ENV NODE_ENV=development
WORKDIR /app

COPY package*.json ./
RUN npm --build-from-source install

COPY nest-cli.json package*.json tsconfig*.json tslint*.js /app/
COPY src /app/src
RUN npm run build


# _ _ _ 
# | | | | (_) 
# _ __ _ __ ___ __| |_ _ ___| |_ _ ___ _ __ 
# | '_ \| '__/ _ \ / _` | | | |/ __| __| |/ _ \| '_ \ 
# | |_) | | | (_) | (_| | |_| | (__| |_| | (_) | | | |
# | .__/|_| \___/ \__,_|\__,_|\___|\__|_|\___/|_| |_|
# | | 
# |_| 
#
FROM node:18-alpine as production

ENV NODE_ENV=production
WORKDIR /app

COPY --from=build /app/dist/src /app/src
COPY --from=build /app/package.json /app/package.json
COPY --from=build /app/package-lock.json /app/package-lock.json

RUN npm install --production

EXPOSE 3000

CMD [ "node", "/app/src/main.js" ]

La separación entre la fase de construcción y la de servicio es una característica importante que se ha considerado en el ejemplo. Sería meritorio si se discutiera sobre el uso de un sistema operativo optimizado en la etapa de producción que aquí está la versión ALPINE en las distribuciones de Linux.

Dockerfile MultiStage

Después de colocar el Dockerfile en el proyecto, el proceso de compilación sería el siguiente paso. El resultado debe ser idéntico a la instantánea.


Envuélvalo y ensúciese las manos

Todas estas palabras solo intentan implicar los beneficios de Dockerfile MultiStage y recomendarlo. Si está de acuerdo conmigo, a menos que no haya iniciado su aplicación, no puede creerlo.


Gracias por llegar hasta aquí, si encuentras esto útil no olvides dejar un👍🏼y suscribirse para recibir más contenido.

Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre AWS y Laravel:

Recent Post