DigitalOcean es una plataforma en la nube que proporciona una variedad de servicios para construir y desplegar aplicaciones.
En esta guía, desplegaremos un servidor HTTP de Bun en DigitalOcean usando un Dockerfile.
NOTE
Antes de continuar, asegúrate de tener:- Una aplicación Bun lista para desplegar
- Una cuenta de DigitalOcean
- DigitalOcean CLI instalado y configurado
- Docker instalado y agregado a tu
PATH
Crear un nuevo Registro de Contenedores de DigitalOcean
Crea un nuevo Registro de Contenedores para almacenar la imagen de Docker.
A través del panel de control de DigitalOcean
En el panel de control de DigitalOcean, ve a Container Registry e ingresa los detalles para el nuevo registro.
Asegúrate de que los detalles sean correctos, luego haz clic en Create Registry.
A través de la CLI de DigitalOcean
doctl registry create bun-digitalocean-demoName Endpoint Region slug
bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2Deberías ver el nuevo registro en el panel de registro de DigitalOcean:
Crear un nuevo Dockerfile
Asegúrate de estar en el directorio que contiene tu proyecto, luego crea un nuevo Dockerfile en la raíz de tu proyecto. Este archivo contiene las instrucciones para inicializar el contenedor, copiar los archivos de tu proyecto local, instalar dependencias e iniciar la aplicación.
# Usar la imagen oficial de Bun para ejecutar la aplicación
FROM oven/bun:debian
# Establecer el directorio de trabajo en `/app`
WORKDIR /app
# Copiar el package.json y bun.lock dentro del contenedor
COPY package.json bun.lock ./
# Instalar las dependencias
RUN bun install --production --frozen-lockfile
# Copiar el resto de la aplicación dentro del contenedor
COPY . .
# Exponer el puerto (DigitalOcean establecerá la variable de entorno PORT)
EXPOSE 8080
# Ejecutar la aplicación
CMD ["bun", "index.ts"]NOTE
Asegúrate de que el comando de inicio corresponda al punto de entrada de tu aplicación. Esto también puede ser `CMD ["bun", "run", "start"]` si tienes un script de inicio en tu `package.json`.Esta imagen instala dependencias y ejecuta tu aplicación con Bun dentro de un contenedor. Si tu aplicación no tiene dependencias, puedes omitir la línea RUN bun install --production --frozen-lockfile.
Crea un nuevo archivo .dockerignore en la raíz de tu proyecto. Este archivo contiene los archivos y directorios que deben ser excluidos de la imagen del contenedor, como node_modules. Esto hace que tus builds sean más rápidos y pequeños:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Cualquier otro archivo o directorio que quieras excluirAutenticar Docker con el registro de DigitalOcean
Antes de construir y enviar la imagen de Docker, autentica Docker con el Registro de Contenedores de DigitalOcean:
doctl registry loginSuccessfully authenticated with registry.digitalocean.comNOTE
Este comando autentica Docker con el registro de DigitalOcean usando tus credenciales de DigitalOcean. Sin este paso, el comando de construcción y envío fallará con un error de autenticación 401.Construir y enviar la imagen de Docker al registro de DigitalOcean
Asegúrate de estar en el directorio que contiene tu Dockerfile, luego construye y envía la imagen de Docker al registro de DigitalOcean en un solo comando:
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .NOTE
Si estás construyendo en una Mac con ARM (M1/M2), debes usar `docker buildx` con `--platform=linux/amd64` para asegurar la compatibilidad con la infraestructura de DigitalOcean. Usar `docker build` sin el flag de plataforma creará una imagen ARM64 que no se ejecutará en DigitalOcean.Una vez que se envía la imagen, deberías verla en el panel de registro de DigitalOcean:
Crear un nuevo proyecto de App Platform de DigitalOcean
En el panel de control de DigitalOcean, ve a App Platform > Create App. Podemos crear un proyecto directamente desde la imagen del contenedor.
Asegúrate de que los detalles sean correctos, luego haz clic en Next.
Revisa y configura las opciones de recursos, luego haz clic en Create app.
Visitar tu aplicación en vivo
🥳 ¡Tu aplicación está ahora en vivo! Una vez que se crea la aplicación, deberías verla en el panel de App Platform con la URL pública.