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