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:- Un'applicazione Bun pronta per la distribuzione
- Un account DigitalOcean
- DigitalOcean CLI installato e configurato
- Docker installato e aggiunto al tuo
PATH
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
doctl registry create bun-digitalocean-demoName Endpoint Region slug
bun-digitalocean-demo registry.digitalocean.com/bun-digitalocean-demo sfo2Dovresti 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.
# 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:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Qualsiasi altro file o directory che vuoi escludereAutenticare Docker con il registry DigitalOcean
Prima di costruire e spingere l'immagine Docker, autentica Docker con il Container Registry DigitalOcean:
doctl registry loginSuccessfully authenticated with registry.digitalocean.comNOTE
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:
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.