Container-Image lokal testen

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.

In einem Emulator für Cloud Run for Anthos in Google Cloud ausführen

Mit dem Cloud Code-Plug-in für VS Code und mit JetBrains-IDEs können Sie Ihr Container-Image lokal in einem Emulator für Cloud Run for Anthos in Google Cloud in Ihrer IDE ausführen und dabei Fehler beheben. Mit dem Emulator können Sie eine Umgebung konfigurieren, die für Ihren Dienst in Cloud Run for Anthos in Google Cloud repräsentativ ist.

Sie können Eigenschaften wie CPU- und Arbeitsspeicherzuweisung konfigurieren, Umgebungsvariablen angeben und Cloud SQL-Datenbankverbindungen festlegen.

  1. Installieren Sie Cloud Code für VS Code oder eine JetBrains-IDE.
  2. Folgen Sie der Anleitung für die lokale Entwicklung und Fehlerbehebung in Ihrer IDE.

Lokal mit Docker ausführen

So testen Sie das Container-Image lokal mit Docker:

  1. 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. gcr.io/myproject/my-image:latest.

    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.

  2. Ö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.

Lokal mit Docker und Zugriff auf Google Cloud-Dienste ausführen

Wenn Sie Google Cloud-Clientbibliotheken für das Einbinden Ihrer Anwendung in GCP-Dienste verwenden und diese Dienste noch nicht zu dem Zweck gesichert haben, den externen Zugriff zu steuern, können Sie Ihren lokalen Container mit Standardanmeldedaten für Anwendungen zur Authentifizierung bei Google Cloud-Diensten einrichten.

Gehen Sie zum lokalen Ausführen so vor:

  1. Wie Sie die Anmeldedaten Ihres Dienstkontos generieren, abrufen und konfigurieren, erfahren Sie unter Erste Schritte bei der Authentifizierung.

  2. Mit den folgenden Docker-Ausführungsflags werden die Anmeldedaten und die Konfiguration des lokalen Systems in den lokalen Container eingefügt:

    1. 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 Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS festgelegt haben:
      -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
    2. Verwenden Sie das Flag --environment (-e), um die Variable GOOGLE_APPLICATION_CREDENTIALS im Container festzulegen:
      -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
  3. 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

    /tmp/keys/FILE_NAME.json
    gut geeignet ist, um Ihre Anmeldedaten im Container zu platzieren.

    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.

Weitere Informationen

Container-Images und Dienste bereitstellen