Compartir comentarios
Las respuestas se generan en base a la documentación.

Containerizar una aplicación Bun

Requisitos previos

  • Tienes un cliente git. Los ejemplos de esta sección usan git por línea de comandos, pero puedes usar cualquier cliente.

Descripción general

Durante mucho tiempo, Node.js ha sido el runtime de facto para aplicaciones JavaScript del lado del servidor. En los últimos años han surgido runtimes alternativos en el ecosistema, incluido Bun. Al igual que Node.js, Bun es un runtime de JavaScript. Bun es un runtime comparativamente ligero diseñado para ser rápido y eficiente.

¿Por qué desarrollar aplicaciones Bun con Docker? Tener varios runtimes para elegir es genial. Pero a medida que aumenta el número de runtimes, resulta difícil gestionar los distintos runtimes y sus dependencias de forma coherente en todos los entornos. Ahí entra Docker. Crear y destruir contenedores bajo demanda es una buena forma de gestionar los distintos runtimes y sus dependencias. Además, al ser un runtime bastante nuevo, conseguir un entorno de desarrollo consistente para Bun puede ser complicado. Docker puede ayudarte a configurar un entorno de desarrollo consistente para Bun.

Obtener la aplicación de ejemplo

Clona la aplicación de ejemplo para usarla en esta guía. Abre una terminal, ve al directorio donde quieras trabajar y ejecuta el siguiente comando para clonar el repositorio:

$ git clone https://github.com/dockersamples/bun-docker.git && cd bun-docker

Ahora deberías tener el siguiente contenido en tu directorio bun-docker.

├── bun-docker/
│ ├── compose.yml
│ ├── Dockerfile
│ ├── LICENSE
│ ├── server.js
│ └── README.md

Crear un Dockerfile

Antes de crear un Dockerfile, debes elegir una imagen base. Puedes usar la imagen oficial de Docker para Bun o una Docker Hardened Image (DHI) del catálogo de imágenes endurecidas.

Elegir DHI ofrece una imagen lista para producción, ligera y segura. Para más información, consulta Docker Hardened Images.

Las Docker Hardened Images (DHI) están disponibles para Bun en el catálogo de Docker Hardened Images. Puedes hacer pull de las DHI directamente desde el registro dhi.io.

  1. Inicia sesión en el registro DHI:

    $ docker login dhi.io
    
  2. Haz pull de la DHI de Bun como dhi.io/bun:1. La etiqueta (1) en este ejemplo se refiere a la última versión 1.x de Bun.

    $ docker pull dhi.io/bun:1
    

Para otras versiones disponibles, consulta el catálogo.

# Use the DHI Bun image as the base image
FROM dhi.io/bun:1

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . .

# Expose the port on which the API will listen
EXPOSE 3000

# Run the server when the container launches
CMD ["bun", "server.js"]

Usar la imagen oficial de Docker es sencillo. En el siguiente Dockerfile verás que la instrucción FROM usa oven/bun como imagen base.

Puedes encontrar la imagen en Docker Hub. Es la imagen oficial de Docker para Bun, creada por Oven, la empresa detrás de Bun, y está disponible en Docker Hub.

# Use the official Bun image
FROM oven/bun:latest

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . .

# Expose the port on which the API will listen
EXPOSE 3000

# Run the server when the container launches
CMD ["bun", "server.js"]

Además de especificar la imagen base, el Dockerfile también:

  • Establece el directorio de trabajo del contenedor en /app.
  • Copia el contenido del directorio actual al directorio /app del contenedor.
  • Expone el puerto 3000, donde la API escucha peticiones.
  • Y por último, inicia el servidor al lanzar el contenedor con el comando bun server.js.

Ejecutar la aplicación

Dentro del directorio bun-docker, ejecuta el siguiente comando en una terminal.

$ docker compose up --build

Abre un navegador y visita la aplicación en http://localhost:3000. Verás el mensaje {"Status" : "OK"} en el navegador.

En la terminal, pulsa ctrl+c para detener la aplicación.

Ejecutar la aplicación en segundo plano

Puedes ejecutar la aplicación desacoplada de la terminal añadiendo la opción -d. Dentro del directorio bun-docker, ejecuta el siguiente comando en una terminal.

$ docker compose up --build -d

Abre un navegador y visita la aplicación en http://localhost:3000.

En la terminal, ejecuta el siguiente comando para detener la aplicación.

$ docker compose down

Resumen

En esta sección aprendiste a containerizar y ejecutar tu aplicación Bun con Docker.

Información relacionada:

Próximos pasos

En la siguiente sección aprenderás a desarrollar tu aplicación con contenedores.