Crear una imagen de Docker con Node.js y TypeScript
🚀 Crear una imagen de Docker
Docker te permite empaquetar y distribuir aplicaciones de una manera consistente y escalable. En esta guía, recorreremos los pasos para crear una imagen de Docker para una aplicación simple de Node.js y TypeScript.
Tabla de contenidos
- Requisitos previos
- Configurar un proyecto simple de Node.js
- Crear un Dockerfile
- Ejecutar y probar la imagen de Docker
- Usar Docker Compose
- Producción con docker-compose.prod.yml
- Repositorio del proyecto
🛠 Requisitos previos
Antes de comenzar, asegúrate de tener lo siguiente instalado en tu máquina:
- Node.js (Se recomienda la última versión LTS) 🚀
- Docker 🚀
- Conocimientos básicos de JavaScript/TypeScript
Configurar un proyecto en Nodejs
Comencemos creando una aplicación Node.js + TypeScript sencilla:
$ mkdir node-docker-app && cd node-docker-app
$ npm init -y
$ npm install typescript ts-node express cors
$ npx tsc --init
Luego, crea un archivo index.ts en la raiz de tu proyecto.
import express from 'express';
import cors from 'cors';
class Server {
public app: express.Application = express();
private port: number = 4000;
constructor() {
this.app.use(express.json());
this.app.use(express.urlencoded({ extended: true }));
this.app.use(cors());
this.listen();
}
public listen() {
this.app.listen(() => console.log(`Server listening on port ${this.port}`));
}
}
new Server();
Crear-un Dockerfile
Ahora, vamos a crear un Dockerfile en la raíz de nuestro proyecto.
# Usar una imagen oficial de Node.js como base
FROM node:18-alpine
# Establecer el directorio de trabajo dentro del contenedor
WORKDIR /app
# Copiar package.json y package-lock.json
COPY package*.json ./
# Instalar dependencias
RUN npm install
# Copiar el resto de los archivos de la aplicación
COPY . .
# Exponer el puerto de la aplicación
EXPOSE 4000
# Iniciar la aplicación
CMD ["npm", "run", "start"]
Ejecutar y probar la imagen de Docker
# Construir la imagen de Docker
$ docker build -t nodejs-ts-docker .
# Ejecutar el contenedor
$ docker run -p 4000:4000 nodejs-ts-docker
Usando Docker Compose
En lugar de ejecutar múltiples comandos manualmente, podemos usar docker-compose.yml:
version: "3.8"
services:
app:
build: .
ports:
- "4000:4000"
environment:
- NODE_ENV=development
✅ Ejecutando con Docker Compose
$ docker-compose up -d
Producción con docker-compose.prod.yml
version: "3.8"
services:
app:
build: .
ports:
- "4000:4000"
environment:
- NODE_ENV=production
command: ["node", "build/index.js"]
✅ Ejecutando en Producción
$ docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
Esto le indica a Docker que use tanto docker-compose.yml como docker-compose.prod.yml, sobrescribiendo la configuración específica de producción.
🔗 Repositorio del Proyecto
Para ver el código fuente completo y las últimas actualizaciones, visita: