Skip to content

DigitalOcean è una piattaforma cloud che fornisce una serie di servizi per costruire e distribuire applicazioni.

In questa guida, distribuiremo un server HTTP Bun su DigitalOcean usando un Dockerfile.

NOTE

Prima di continuare, assicurati di avere:

Creare un nuovo Container Registry DigitalOcean

Crea un nuovo Container Registry per memorizzare l'immagine Docker.

Tramite il dashboard DigitalOcean

Nel dashboard DigitalOcean, vai su Container Registry e inserisci i dettagli per il nuovo registry.

Assicurati che i dettagli siano corretti, poi clicca Create Registry.

Tramite il DigitalOcean CLI
bash
doctl registry create bun-digitalocean-demo
txt
Name                     Endpoint                                           Region slug
bun-digitalocean-demo    registry.digitalocean.com/bun-digitalocean-demo    sfo2

Dovresti vedere il nuovo registry nel dashboard del registry DigitalOcean:

Creare un nuovo Dockerfile

Assicurati di essere nella directory contenente il tuo progetto, poi crea un nuovo Dockerfile nella root del tuo progetto. Questo file contiene le istruzioni per inizializzare il container, copiare i file del progetto locale, installare le dipendenze e avviare l'applicazione.

docker
# Usa l'immagine ufficiale Bun per eseguire l'applicazione
FROM oven/bun:debian

# Imposta la directory di lavoro su `/app`
WORKDIR /app

# Copia il package.json e bun.lock nel container
COPY package.json bun.lock ./

# Installa le dipendenze
RUN bun install --production --frozen-lockfile

# Copia il resto dell'applicazione nel container
COPY . .

# Espone la porta (DigitalOcean imposterà la variabile d'ambiente PORT)
EXPOSE 8080

# Esegui l'applicazione
CMD ["bun", "index.ts"]

NOTE

Assicurati che il comando di avvio corrisponda al punto di ingresso della tua applicazione. Questo può anche essere `CMD ["bun", "run", "start"]` se hai uno script di avvio nel tuo `package.json`.

Questa immagine installa le dipendenze ed esegue la tua app con Bun all'interno di un container. Se la tua app non ha dipendenze, puoi omettere la riga RUN bun install --production --frozen-lockfile.

Crea un nuovo file .dockerignore nella root del tuo progetto. Questo file contiene i file e le directory che dovrebbero essere esclusi dall'immagine del container, come node_modules. Questo rende le tue build più veloci e più piccole:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Qualsiasi altro file o directory che vuoi escludere

Autenticare Docker con il registry DigitalOcean

Prima di costruire e spingere l'immagine Docker, autentica Docker con il Container Registry DigitalOcean:

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

NOTE

Questo comando autentica Docker con il registry DigitalOcean usando le tue credenziali DigitalOcean. Senza questo passaggio, il comando di build e push fallirà con un errore di autenticazione 401.

Costruire e spingere l'immagine Docker nel registry DigitalOcean

Assicurati di essere nella directory contenente il tuo Dockerfile, poi costruisci e spingi l'immagine Docker nel registry DigitalOcean in un unico comando:

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

NOTE

Se stai costruendo su un Mac ARM (M1/M2), devi usare `docker buildx` con `--platform=linux/amd64` per garantire la compatibilità con l'infrastruttura DigitalOcean. Usare `docker build` senza il flag platform creerà un'immagine ARM64 che non verrà eseguita su DigitalOcean.

Una volta spinta l'immagine, dovresti vederla nel dashboard del registry DigitalOcean:

Creare un nuovo progetto DigitalOcean App Platform

Nel dashboard DigitalOcean, vai su App Platform > Create App. Possiamo creare un progetto direttamente dall'immagine del container.

Assicurati che i dettagli siano corretti, poi clicca Next.

Rivedi e configura le impostazioni delle risorse, poi clicca Create app.

Visitare la tua applicazione live

🥳 La tua app è ora online! Una volta creata l'app, dovresti vederla nel dashboard App Platform con l'URL pubblico.

Bun a cura di www.bunjs.com.cn