Skip to content

DigitalOcean é uma plataforma de nuvem que fornece vários serviços para construir e implantar aplicações.

Neste guia, vamos implantar um servidor HTTP Bun no DigitalOcean usando um Dockerfile.

NOTE

Antes de continuar, certifique-se de ter:

Criar um novo Container Registry DigitalOcean

Crie um novo Container Registry para armazenar a imagem Docker.

Através do dashboard DigitalOcean

No dashboard DigitalOcean, vá para Container Registry e insira os detalhes para o novo registry.

Certifique-se de que os detalhes estão corretos e clique em Create Registry.

Através do DigitalOcean CLI
bash
doctl registry create bun-digitalocean-demo
txt
Name                     Endpoint                                           Region slug
bun-digitalocean-demo    registry.digitalocean.com/bun-digitalocean-demo    sfo2

Você deve ver o novo registry no DigitalOcean registry dashboard:

Criar um novo Dockerfile

Certifique-se de estar no diretório contendo seu projeto e crie um novo Dockerfile na raiz do seu projeto. Este arquivo contém as instruções para inicializar o container, copiar os arquivos do projeto local, instalar dependências e iniciar a aplicação.

docker
# Use a imagem oficial do Bun para executar a aplicação
FROM oven/bun:debian

# Defina o diretório de trabalho como `/app`
WORKDIR /app

# Copie o package.json e bun.lock para dentro do container
COPY package.json bun.lock ./

# Instale as dependências
RUN bun install --production --frozen-lockfile

# Copie o restante da aplicação para dentro do container
COPY . .

# Exponha a porta (DigitalOcean definirá a variável de ambiente PORT)
EXPOSE 8080

# Execute a aplicação
CMD ["bun", "index.ts"]

NOTE

Certifique-se de que o comando de início corresponde ao ponto de entrada da sua aplicação. Isso também pode ser `CMD ["bun", "run", "start"]` se você tiver um script start no seu `package.json`.

Esta imagem instala dependências e executa sua aplicação com Bun dentro de um container. Se sua aplicação não tiver dependências, você pode omitir a linha RUN bun install --production --frozen-lockfile.

Crie um novo arquivo .dockerignore na raiz do seu projeto. Este arquivo contém os arquivos e diretórios que devem ser excluídos da imagem do container, como node_modules. Isso torna seus builds mais rápidos e menores:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Quaisquer outros arquivos ou diretórios que você deseja excluir

Autenticar o Docker com o registry DigitalOcean

Antes de buildar e enviar a imagem Docker, autentique o Docker com o DigitalOcean Container Registry:

bash
doctl registry login
txt
Successfully authenticated with registry.digitalocean.com

NOTE

Este comando autentica o Docker com o registry do DigitalOcean usando suas credenciais do DigitalOcean. Sem esta etapa, o comando de build e push falhará com um erro de autenticação 401.

Build e push da imagem Docker para o registry DigitalOcean

Certifique-se de estar no diretório contendo seu Dockerfile e faça o build e push da imagem Docker para o registry DigitalOcean em um comando:

bash
docker buildx build --platform=linux/amd64 -t registry.digitalocean.com/bun-digitalocean-demo/bun-digitalocean-demo:latest --push .

NOTE

Se você estiver buildando em um Mac ARM (M1/M2), deve usar `docker buildx` com `--platform=linux/amd64` para garantir compatibilidade com a infraestrutura do DigitalOcean. Usar `docker build` sem a flag de plataforma criará uma imagem ARM64 que não será executada no DigitalOcean.

Depois que a imagem for enviada, você deverá vê-la no DigitalOcean registry dashboard:

Criar um novo projeto DigitalOcean App Platform

No dashboard DigitalOcean, vá para App Platform > Create App. Podemos criar um projeto diretamente da imagem do container.

Certifique-se de que os detalhes estão corretos e clique em Next.

Revise e configure as configurações de recursos e clique em Create app.

Visitar sua aplicação online

🥳 Sua aplicação está agora online! Depois que a aplicação for criada, você deverá vê-la no dashboard App Platform com a URL pública.

Bun by www.bunjs.com.cn edit