Während der Entwicklung haben Sie die Möglichkeit, das Container-Image lokal auszuführen und zu testen, bevor Sie es bereitstellen. Sie können Cloud Code oder lokal installierte Docker zur lokalen Ausführung und für lokale Tests verwenden, einschließlich einer lokalen Ausführung mit Zugriff auf Google Cloud-Dienste.
Hinweise
Wenn Sie zum ersten Mal lokal ausführen, haben Sie möglicherweise nicht alle Berechtigungen, die zum Zugriff auf das Image über die von Ihnen verwendete unterstützte Container Registry erforderlich sind.
Informationen dazu, wie Sie Zugriff erhalten, finden Sie in der Dokumentation der unterstützten Containerregistrierung. Sie können Docker für den Zugriff auf Artifact Registry mit dem gcloud CLI Credential Helper konfigurieren
gcloud auth configure-docker LOCATION-docker.pkg.dev
Lokal testen
Sie können Tests lokal mit Docker, Docker mit Google Cloud Access, dem Cloud Code-Emulator oder der Google Cloud CLI ausführen. Wählen Sie den entsprechenden Tab aus, um eine Anleitung aufzurufen.
Docker
So testen Sie das Container-Image lokal mit Docker:
Verwenden Sie den Docker-Befehl:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die FormLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.Die Umgebungsvariable
PORT
gibt den Port an, über den die Anwendung HTTP- oder HTTPS-Anfragen empfängt. Dies ist eine Anforderung des Containerlaufzeitvertrags. In diesem Beispiel verwenden wir Port 8080.Öffnen Sie im Browser http://localhost:9090.
Wenn Sie zum ersten Mal mit Containern arbeiten, sollten Sie die Einführung in Docker lesen. Weitere Informationen zu Docker-Befehlen finden Sie in der Docker-Dokumentation.
Docker mit Google Cloud Access
Wenn Sie die Google Cloud-Clientbibliotheken verwenden, um Ihre Anwendung in Google Cloud-Dienste zu integrieren, und diese Dienste noch nicht zur Steuerung des externen Zugriffs gesichert haben, können Sie Ihren lokalen Container für die Authentifizierung bei Google Cloud-Diensten mit Standardanmeldedaten für Anwendungen einrichten.
Gehen Sie zum lokalen Ausführen so vor:
Wie Sie die Anmeldedaten Ihres Dienstkontos generieren, abrufen und konfigurieren, erfahren Sie unter Erste Schritte bei der Authentifizierung.
Mit den folgenden Docker-Ausführungsflags werden die Anmeldedaten und die Konfiguration des lokalen Systems in den lokalen Container eingefügt:
- Verwenden Sie das Flag
--volume
(-v
), um die Datei mit den Anmeldedaten in den Container einzufügen. Dabei wird vorausgesetzt, dass Sie auf Ihrer Maschine bereits die UmgebungsvariableGOOGLE_APPLICATION_CREDENTIALS
festgelegt haben:-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- Verwenden Sie das Flag
--environment
(-e
), um die VariableGOOGLE_APPLICATION_CREDENTIALS
im Container festzulegen:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- Verwenden Sie das Flag
Optional können Sie diesen vollständig konfigurierten
run
-Befehl von Docker verwenden:PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \ IMAGE_URL
Beachten Sie, dass der im obigen Beispiel aufgeführte Pfad
gut geeignet ist, um Ihre Anmeldedaten im Container zu platzieren./tmp/keys/FILE_NAME.json
Sie können aber auch ein anderes Verzeichnis verwenden. Wichtig ist, dass die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
mit dem gebundenen Bereitstellungsspeicherort im Container übereinstimmt.Beachten Sie auch, dass Sie bei einigen Google Cloud-Diensten möglicherweise eine alternative Konfiguration verwenden sollten, um die lokale Fehlerbehebung von der Produktionsleistung und den Daten zu isolieren.
Cloud Code-Emulator
Mit dem Cloud Code-Plug-in für VS Code und mit JetBrains-IDEs können Sie Ihr Container-Image lokal in einem Cloud Run-Emulator in Ihrer IDE ausführen und dabei Fehler beheben. Der Emulator bietet die Möglichkeit, eine Umgebung zu konfigurieren, die für Ihren Dienst in Cloud Run typisch ist.
Sie können Attribute wie CPU- und Arbeitsspeicherzuweisung konfigurieren, Umgebungsvariablen angeben und Cloud SQL-Datenbankverbindungen festlegen.
- Installieren Sie Cloud Code für VS Code oder eine JetBrains-IDE.
- Folgen Sie der Anleitung für die lokale Entwicklung und Fehlerbehebung in Ihrer IDE.
- VS Code: Lokal entwickeln und Fehler beheben
- IntelliJ: Lokal entwickeln und Fehler beheben
gcloud-CLI
Google Cloud CLI enthält eine lokale Entwicklungsumgebung, um Cloud Run zu emulieren, das einen Container aus der Quelle erstellen, den Container auf Ihrem lokalen Computer ausführen und den Container nach Änderungen der Quelle automatisch neu erstellen kann.
So starten Sie die lokale Entwicklungsumgebung:
Wechseln Sie in das Verzeichnis, das den Quellcode Ihres Dienstes enthält.
Rufen Sie den Befehl auf:
gcloud beta code dev
Wenn im lokalen Verzeichnis ein Dockerfile vorhanden ist, wird es zum Erstellen des Containers verwendet. Wenn kein Dockerfile vorhanden ist, wird der Container mit den Buildpacks von Google Cloud erstellt.
Rufen Sie http://localhost:8080/ in Ihrem Browser auf, um den Dienst zu sehen.
Wenn Sie einen benutzerdefinierten Port mit der Option --local-port
angegeben haben, müssen Sie den Port in Ihrem Browser öffnen.
So beenden Sie den lokalen Server:
- Mac OS und Linux: Control + C
- Windows: Strg + Pause
Dienstkonfiguration anpassen
Sie können die Cloud Run-Konfiguration des lokal ausgeführten Dienstes mithilfe einer YAML-Datei anpassen. Das YAML-Format ist dasselbe, das zum Bereitstellen eines Cloud Run-Dienstes verwendet werden kann, aber nur einen Teil der Cloud Run-Diensteinstellungen unterstützt. gcloud beta
code dev
sucht und verwendet jede Datei, die im aktuellen Verzeichnis auf *.service.dev.yaml
endet. Wenn keine gefunden werden, wird eine beliebige Datei verwendet, die mit *.service.yaml
endet.
Sie können die folgenden Einstellungen für die lokale Entwicklung konfigurieren:
Das Feld image
des Containers ist für die lokale Entwicklung nicht erforderlich, da das Image erstellt und für den Dienst bereitgestellt wird, wenn der Befehl ausgeführt wird.
Sie können die folgende Beispieldatei service.dev.yaml
für die lokale Entwicklung verwenden:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
Mit Anmeldedaten testen
Wenn Sie dem Container die Berechtigung zur Verwendung von Google Cloud-Diensten erteilen möchten, müssen Sie dem Container Zugriffsdaten geben.
Wenn Sie dem Container mit Ihrem eigenen Konto Zugriff auf Anmeldedaten gewähren möchten, melden Sie sich mit gcloud an und verwenden Sie das Flag
--application-default-credential
:gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
Verwenden Sie das Flag
--service-account
, um der Anwendung Anmeldedaten als Dienstkonto zu geben:gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
Das Flag
--service-account
bewirkt, dass ein Dienstkontoschlüssel lokal heruntergeladen und im Cache gespeichert wird. Der Nutzer ist verantwortlich für die Sicherheit des Schlüssels und den Löschvorgang, wenn er nicht mehr benötigt wird.
Prüfen, ob der Code lokal ausgeführt wird
Wenn Sie lokal in Cloud Run testen, können Sie in Ihrem Code prüfen, ob Ihr Container lokal ausgeführt wird. Prüfen Sie dazu die Umgebungsvariable K_REVISION
, die Cloud Run für alle Container verfügbar macht.
Docker
Wenn Sie bestätigen möchten, dass der Code lokal in der Google Cloud CLI ausgeführt wird, können Sie versuchen, die Umgebungsvariable K_REVISION
abzufragen. Da sie jedoch nicht festgelegt wurde, ist kein Wert vorhanden.
Docker mit Google Cloud Access
Wenn Sie die genauen Werte aus dem obigen Abschnitt in Schritt 3 verwendet haben, um zu bestätigen, dass Sie Ihren Code lokal in der Google Cloud CLI ausführen, können Sie die Umgebungsvariable K_REVISION
abfragen und nach dem Wert dev-00001
suchen, um zu bestätigen, dass er lokal ausgeführt wird.
Cloud Code-Emulator
Wenn Sie bestätigen möchten, dass der Code lokal in Cloud Code ausgeführt wird, können Sie die Umgebungsvariable K_REVISION
abfragen und nach dem Wert local
suchen, um zu bestätigen, dass er lokal ausgeführt wird.
gcloud-CLI
Wenn Sie bestätigen möchten, dass der Code lokal in der Google Cloud CLI ausgeführt wird, können Sie die Umgebungsvariable K_REVISION
abfragen und nach einem Wert suchen, der mit dev-
beginnt, um zu bestätigen, dass er lokal ausgeführt wird.
Nächste Schritte
- Informationen zur lokalen Fehlerbehebung bei einer fehlerhaften Cloud Run-Anwendung finden Sie in der Anleitung Fehler eines Cloud Run-Dienstes lokal beheben.
- Container-Images und Dienste bereitstellen