Skip to content

Archivo Dockerfile

Este archivo contiene las instrucciones para construir una imagen Docker de la aplicación.

  • Descripción: Un Dockerfile es un archivo de texto que contiene todas las instrucciones necesarias para construir una imagen de Docker. Define la imagen base, el directorio de trabajo, los archivos a copiar, los comandos a ejecutar durante la construcción y el comando para iniciar la aplicación.
  • Propósito:Contenerizar la aplicación, empaquetándola junto con todas sus dependencias y configuraciones en una unidad autónoma y portable. Esto facilita el despliegue consistente en cualquier entorno que soporte Docker.
  • Funcionalidad clave:
    • FROM node:18: Utiliza la imagen oficial de Node.js versión 18 como base.
    • ORKDIR /app: Establece /app como el directorio de trabajo dentro del contenedor. Todos los comandos posteriores se ejecutarán desde aquí.
    • COPY package*.json ./: Copia los archivos package.json y package-lock.json (si existe) al directorio de trabajo. Se hace primero para aprovechar la caché de Docker y acelerar las reconstrucciones si solo cambian los archivos de código.
    • RUN npm install: Instala todas las dependencias de Node.js definidas en package.json dentro del contenedor.
    • COPY . .: Copia el resto de los archivos del proyecto (excluyendo lo especificado en .dockerignore) al directorio de trabajo.
    • EXPOSE 3000: Indica que el contenedor escuchará en el puerto 3000 en tiempo de ejecución. Esto es informativo y no publica el puerto automáticamente.
    • CMD ["node", "app.js"]: Define el comando predeterminado que se ejecutará cuando se inicie un contenedor a partir de esta imagen. Es importante notar que el comando debería ser CMD ["node", "dist/index.js"] o similar si la aplicación es TypeScript y se transpila a JavaScript, o CMD ["tsx", "src/index.ts"] si se usa tsx directamente en producción (aunque esto último es menos común para imágenes finales). La línea actual app.js es genérica y debería alinearse con el punto de entrada real de la aplicación después de la compilación.
  • Rol en la aplicación: Es el corazón de la estrategia de despliegue basada en contenedores. Permite que la aplicación sea portable, escalable y desplegable de manera consistente en cualquier servidor o plataforma de orquestación (como Kubernetes).
ts
# Imagen base de Node.js
FROM node:18
# Establecer el directorio de trabajo en el contenedor
WORKDIR /app
# Copiar los archivos de configuración de la aplicación
COPY package*.json ./
RUN npm install
# Copiar el resto de los archivos de la aplicación
COPY . .
# Exponer el puerto en el que la aplicación escuchará
EXPOSE 3000
# Comando para iniciar la aplicación
CMD ["node", "app.js"]