Volver a Blog Tutorial

Cómo Dockerizar un Proyecto Backend y Frontend: Una Guía Paso a Paso

3 min read vistas 1 leyendo ahora
Índice del artículo

Cómo Dockerizar un Proyecto Backend y Frontend: Una Guía Paso a Paso

En el mundo del desarrollo moderno, la capacidad de crear aplicaciones portables es esencial para trabajar de manera eficiente y escalar sin problemas. Docker es una de las herramientas más poderosas para lograr esto, permitiéndonos empacar nuestras aplicaciones, junto con sus dependencias, en contenedores que pueden ejecutarse en cualquier entorno. En este artículo, te mostraré cómo dockerizar un proyecto tanto de backend como de frontend, para que puedas usarlo donde quieras.

¿Qué es Docker?

Docker es una plataforma que permite desarrollar, enviar y ejecutar aplicaciones dentro de contenedores. Un contenedor incluye todo lo necesario para que una aplicación funcione: código, dependencias, librerías y configuraciones, lo que garantiza que se ejecute de la misma manera en cualquier entorno.

¿Por qué Dockerizar tu Proyecto?

Al dockerizar tu aplicación, te aseguras de que:

  • Portabilidad: Puedes ejecutar la misma imagen en cualquier lugar, desde tu máquina local hasta un servidor en la nube.
  • Reproducibilidad: Todos los entornos son consistentes, evitando el clásico “funciona en mi máquina”.
  • Escalabilidad: Facilita la integración con orquestadores como Kubernetes, permitiendo escalar tu aplicación fácilmente.

Dockerizando un Proyecto Backend

Vamos a empezar dockerizando un backend sencillo en Node.js con Express.

1. Estructura del Proyecto

La estructura básica de tu proyecto Node.js debería lucir así:

mi-backend/
    ├── Dockerfile
    ├── .dockerignore
    ├── package.json
    ├── server.js
    └── node_modules/

2. Crear el Dockerfile

El Dockerfile define cómo se debe construir la imagen de Docker para tu aplicación:

FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

3. Crear el .dockerignore

Excluye archivos innecesarios del contenedor:

node_modules
npm-debug.log

4. Construir la Imagen

Navega a la carpeta del proyecto y ejecuta el comando:

docker build -t mi-backend .

5. Ejecutar el Contenedor

Ejecuta el contenedor en el puerto 3000:

docker run -p 3000:3000 mi-backend

Dockerizando un Proyecto Frontend

Ahora vamos a dockerizar un frontend sencillo creado con React.

1. Estructura del Proyecto

Un proyecto típico de React tendrá esta estructura:

mi-frontend/
    ├── Dockerfile
    ├── .dockerignore
    ├── package.json
    ├── public/
    ├── src/
    └── node_modules/

2. Crear el Dockerfile

Este Dockerfile servirá la aplicación con Nginx:

FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

3. Crear el .dockerignore

Excluye archivos innecesarios:

node_modules
build
npm-debug.log

4. Construir la Imagen

Ejecuta el siguiente comando para crear la imagen del frontend:

docker build -t mi-frontend .

5. Ejecutar el Contenedor

Sirve la aplicación en el puerto 3000:

docker run -p 3000:80 mi-frontend

Orquestando con Docker Compose

Si trabajas con un backend y frontend, puedes usar Docker Compose:

version: '3'
services:
  frontend:
    build: ./mi-frontend
    ports:
      - "3000:80"
  backend:
    build: ./mi-backend
    ports:
      - "3001:3000"

Ejecuta ambos servicios con:

docker-compose up

Subiendo las Imágenes a Docker Hub

Sube tus imágenes a Docker Hub para ejecutarlas en cualquier servidor:

  • Login en Docker Hub: docker login
  • Etiquetar la Imagen: docker tag mi-backend tu-usuario/mi-backend
  • Subir la Imagen: docker push tu-usuario/mi-backend

Fin

Dockerizar tus proyectos backend y frontend te permitirá ejecutar tu código de manera eficiente en cualquier entorno. Si sigues los pasos descritos, estarás listo para crear aplicaciones portables y escalables. ¡Dockerizar es un gran primer paso hacia un flujo de trabajo más ágil y robusto!

Últimos artículos

... tip: teclea algo secreto (una pista... CAMILO)