Google Cloud Run ist eine verwaltete Plattform zum Bereitstellen und Skalieren serverloser Anwendungen. Google übernimmt die Infrastruktur für Sie.
In dieser Anleitung stellen wir einen Bun-HTTP-Server mit einer Dockerfile auf Google Cloud Run bereit.
NOTE
Bevor Sie fortfahren, stellen Sie sicher, dass Sie Folgendes haben:- Eine Bun-Anwendung, die zur Bereitstellung bereit ist
- Ein Google Cloud-Konto mit aktivierter Abrechnung
- Google Cloud CLI installiert und konfiguriert
gcloud initialisieren, indem Sie ein Projekt auswählen/erstellen
Stellen Sie sicher, dass Sie die Google Cloud CLI initialisiert haben. Dieser Befehl meldet Sie an und fordert Sie auf, entweder ein bestehendes Projekt auszuwählen oder ein neues zu erstellen.
Weitere Hilfe zur Google Cloud CLI finden Sie in der offiziellen Dokumentation.
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!(Optional) Ihre Projektinformationen in Umgebungsvariablen speichern
Legen Sie Variablen für Ihre Projekt-ID und -nummer fest, damit sie in den folgenden Schritten einfacher wiederverwendet werden können.
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]Ein Billing-ServiceAccount verknüpfen
Listen Sie Ihre verfügbaren Billing-Konten auf und verknüpfen Sie eines mit Ihrem Projekt:
gcloud billing accounts listACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID] My Billing Account TrueVerknüpfen Sie Ihr Billing-Konto mit Ihrem Projekt. Ersetzen Sie [BILLING_ACCOUNT_ID] durch die ID Ihres Billing-Kontos.
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-...APIs aktivieren und IAM-Rollen konfigurieren
Aktivieren Sie die erforderlichen Dienste und erteilen Sie Cloud Build-Berechtigungen:
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
Diese Befehle aktivieren Cloud Run (`run.googleapis.com`) und Cloud Build (`cloudbuild.googleapis.com`), die für die Bereitstellung aus dem Quellcode erforderlich sind. Cloud Run führt Ihre containerisierte App aus, während Cloud Build das Erstellen und Verpacken übernimmt.Die IAM-Bindung gewährt dem Compute Engine-ServiceAccount ($PROJECT_NUMBER-compute@developer.gserviceaccount.com) die Berechtigung, Images in Ihrem Namen zu erstellen und bereitzustellen.
Eine Dockerfile hinzufügen
Erstellen Sie eine neue Dockerfile im Stammverzeichnis Ihres Projekts. Diese Datei enthält die Anweisungen zum Initialisieren des Containers, zum Kopieren Ihrer lokalen Projektdateien, zum Installieren von Abhängigkeiten und zum Starten der Anwendung.
# Verwenden Sie das offizielle Bun-Image zum Ausführen der Anwendung
FROM oven/bun:latest
# Kopieren Sie die package.json und bun.lock in den Container
COPY package.json bun.lock ./
# Installieren Sie die Abhängigkeiten
RUN bun install --production --frozen-lockfile
# Kopieren Sie den Rest der Anwendung in den Container
COPY . .
# Führen Sie die Anwendung aus
CMD ["bun", "index.ts"]NOTE
Stellen Sie sicher, dass der Startbefehl dem Einstiegspunkt Ihrer Anwendung entspricht. Dies kann auch `CMD ["bun", "run", "start"]` sein, wenn Sie ein Start-Skript in Ihrer `package.json` haben.Dieses Image installiert Abhängigkeiten und führt Ihre App mit Bun in einem Container aus. Wenn Ihre App keine Abhängigkeiten hat, können Sie die Zeile RUN bun install --production --frozen-lockfile weglassen.
Erstellen Sie eine neue .dockerignore-Datei im Stammverzeichnis Ihres Projekts. Diese Datei enthält die Dateien und Verzeichnisse, die vom Container-Image ausgeschlossen werden sollten, wie z.B. node_modules. Dies macht Ihre Builds schneller und kleiner:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Alle anderen Dateien oder Verzeichnisse, die Sie ausschließen möchtenIhren Dienst bereitstellen
Stellen Sie sicher, dass Sie sich im Verzeichnis mit Ihrer Dockerfile befinden, und stellen Sie dann direkt aus Ihrem lokalen Quellcode bereit:
NOTE
Aktualisieren Sie das `--region`-Flag auf Ihre bevorzugte Region. Sie können dieses Flag auch weglassen, um eine interaktive Eingabeaufforderung zur Auswahl einer Region zu erhalten.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.appIhre Live-Anwendung besuchen
🎉 Ihre Bun-Anwendung ist jetzt live!
Besuchen Sie die Service-URL (https://my-bun-app-....us-west1.run.app), um zu bestätigen, dass alles wie erwartet funktioniert.