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:- Uma aplicação Bun pronta para implantação
- Uma conta DigitalOcean
- DigitalOcean CLI instalado e configurado
- Docker instalado e adicionado ao seu
PATH
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
doctl registry create bun-digitalocean-demoName Endpoint Region slug
bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2Você 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.
# 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:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Quaisquer outros arquivos ou diretórios que você deseja excluirAutenticar o Docker com o registry DigitalOcean
Antes de buildar e enviar a imagem Docker, autentique o Docker com o DigitalOcean Container Registry:
doctl registry loginSuccessfully authenticated with registry.digitalocean.comNOTE
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:
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.