Google Cloud Run è una piattaforma gestita per distribuire e scalare applicazioni serverless. Google gestisce l'infrastruttura per te.
In questa guida, distribuiremo un server HTTP Bun su Google Cloud Run usando un Dockerfile.
NOTE
Prima di continuare, assicurati di avere:- Un'applicazione Bun pronta per la distribuzione
- Un account Google Cloud con la fatturazione abilitata
- Google Cloud CLI installato e configurato
Inizializzare gcloud selezionando/creando un progetto
Assicurati di aver inizializzato il Google Cloud CLI. Questo comando ti fa accedere e ti invita a selezionare un progetto esistente o crearne uno nuovo.
Per ulteriore aiuto con il Google Cloud CLI, consulta la documentazione ufficiale.
gcloud initWelcome! This command will take you through the configuration of gcloud.
You must sign in to continue. Would you like to sign in (Y/n)? Y
You are signed in as [email@example.com].
Pick cloud project to use:
[1] existing-bun-app-1234
[2] Enter a project ID
[3] Create a new project
Please enter numeric choice or text value (must exactly match list item): 3
Enter a Project ID. my-bun-app
Your current project has been set to: [my-bun-app]
The Google Cloud CLI is configured and ready to use!(Opzionale) Memorizzare le informazioni del progetto in variabili d'ambiente
Imposta le variabili per l'ID e il numero del progetto in modo che siano più facili da riutilizzare nei passaggi seguenti.
PROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='name="my bun app"')
PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='name="my bun app"')
echo $PROJECT_ID $PROJECT_NUMBERmy-bun-app-... [PROJECT_NUMBER]Collegare un serviceAccount di fatturazione
Elenca i tuoi account di fatturazione disponibili e collegane uno al tuo progetto:
gcloud billing accounts listACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID] My Billing Account TrueCollega il tuo account di fatturazione al tuo progetto. Sostituisci [BILLING_ACCOUNT_ID] con l'ID del tuo account di fatturazione.
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...Abilitare le API e configurare i ruoli IAM
Attiva i servizi necessari e concedi le autorizzazioni di Cloud Build:
gcloud services enable run.googleapis.com cloudbuild.googleapis.com
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/run.builderNOTE
Questi comandi abilitano Cloud Run (`run.googleapis.com`) e Cloud Build (`cloudbuild.googleapis.com`), necessari per la distribuzione dal codice sorgente. Cloud Run esegue la tua app containerizzata, mentre Cloud Build gestisce la costruzione e il confezionamento.Il binding IAM concede all'account di servizio Compute Engine ($PROJECT_NUMBER-compute@developer.gserviceaccount.com) il permesso di costruire e distribuire immagini per tuo conto.
Aggiungere un Dockerfile
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:latest
# 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 . .
# 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 escludereDistribuire il tuo servizio
Assicurati di essere nella directory contenente il tuo Dockerfile, poi distribuisci direttamente dal tuo codice sorgente locale:
NOTE
Aggiorna il flag `--region` con la tua regione preferita. Puoi anche omettere questo flag per ottenere un prompt interattivo per selezionare una regione.gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticatedDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named
[cloud-run-source-deploy] in region [us-west1] will be created.
Do you want to continue (Y/n)? Y
Building using Dockerfile and deploying container to Cloud Run service [my-bun-app] in project [my-bun-app-...] region [us-west1]
✓ Building and deploying... Done.
✓ Validating Service...
✓ Uploading sources...
✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds...].
✓ Creating Revision...
✓ Routing traffic...
✓ Setting IAM Policy...
Done.
Service [my-bun-app] revision [my-bun-app-...] has been deployed and is serving 100 percent of traffic.
Service URL: https://my-bun-app-....us-west1.run.appVisitare la tua applicazione live
🎉 La tua applicazione Bun è ora online!
Visita l'URL del servizio (https://my-bun-app-....us-west1.run.app) per confermare che tutto funzioni come previsto.