Skip to content

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:

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.

bash
gcloud init
txt
Welcome! 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.

bash
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_NUMBER
txt
my-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:

bash
gcloud billing accounts list
txt
ACCOUNT_ID            NAME                OPEN  MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID]  My Billing Account  True

Verknüpfen Sie Ihr Billing-Konto mit Ihrem Projekt. Ersetzen Sie [BILLING_ACCOUNT_ID] durch die ID Ihres Billing-Kontos.

bash
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]
txt
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:

bash
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.builder

NOTE

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.

docker
# 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:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Alle anderen Dateien oder Verzeichnisse, die Sie ausschließen möchten

Ihren 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.
bash
gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticated
txt
Deploying 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.app

Ihre 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.

Bun von www.bunjs.com.cn bearbeitet