Benutzerdefinierte Laufzeitanwendung in der flexiblen App Engine-Umgebung erstellen

Regions-ID

REGION_ID ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.

Mit benutzerdefinierten Laufzeiten können Sie Anwendungen erstellen, die in einer von einem Dockerfile definierten Umgebung ausgeführt werden. Mit einem Dockerfile können Sie Sprachen und Pakete verwenden, die nicht zur Google Cloud Platform gehören. Außerdem haben Sie die Möglichkeit, dieselben Ressourcen und Tools wie in der flexiblen App Engine-Umgebung zu verwenden.

In dieser Schnellstartanleitung wird ein nginx-Webserver mit einer benutzerdefinierten Laufzeit in App Engine gestartet.

Hinweis

Bevor Sie in dieser Schnellstartanleitung die Beispielanwendung ausführen, müssen Sie Ihre Umgebung einrichten und ein neues Google Cloud-Projekt für App Engine erstellen:

  1. Erstellen Sie mithilfe der Google Cloud Console ein neues Google Cloud-Projekt:

    1. Öffnen Sie die Google Cloud Console:

      Zu den Projekten

    2. Klicken Sie auf Projekt erstellen und benennen Sie das neue Google Cloud-Projekt.

    3. Aktivieren Sie die Abrechnung im neuen Google Cloud-Projekt, indem Sie ein neues Rechnungskonto erstellen oder ein bestehendes auswählen:

      Zur Abrechnung

  2. Laden Sie die Google Cloud CLI herunter und initialisieren Sie die gcloud CLI:

    SDK herunterladen

  3. Führen Sie den folgenden gcloud-Befehl aus, um eine App Engine-Anwendung zu erstellen. Geben Sie dabei an, in welcher geografischen Region die Anwendung ausgeführt werden soll:

    gcloud app create
    

App Engine-Standorte

App Engine ist regional, d. h., die Infrastruktur, in der Ihre Anwendungen ausgeführt werden, befindet sich in einer bestimmten Region und Google verwaltet sie so, dass sie redundant in allen Zonen innerhalb dieser Region verfügbar ist.

Die Erfüllung der Latenz-, Verfügbarkeits- oder Langlebigkeitsanforderungen ist der wichtigste Gesichtspunkt bei der Auswahl der Region, in der Ihre Anwendungen ausgeführt werden sollen. Sie können im Allgemeinen die Region auswählen, die den Nutzern Ihrer Anwendung am nächsten ist. Sie sollten jedoch die Standorte berücksichtigen, an denen App Engine verfügbar ist, sowie die Standorte der anderen Google Cloud-Produkte und -Dienste, die Ihre Anwendung nutzt. Eine Nutzung von Diensten über mehrere Standorte kann die Latenz der Anwendung sowie die Preise beeinflussen.

Sie können die Region einer Anwendung nicht mehr ändern, nachdem Sie sie festgelegt haben.

Wenn Sie bereits eine App Engine-Anwendung erstellt haben, können Sie die Region mit einer der folgenden Methoden aufrufen:

Hello World-App herunterladen

  1. Wählen Sie eine der folgenden Optionen aus, um die "Hello World"-Beispielanwendung von GitHub auf Ihren Computer herunterzuladen:

    • Klonen Sie die "Hello World"-Beispielanwendung aus diesem Repository:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • Laden Sie das Beispiel als ZIP-Datei herunter und extrahieren Sie diese anschließend in ein lokales Verzeichnis.

  2. Rufen Sie das Verzeichnis nginx auf, in dem sich der Beispielcode befindet. Beispiel:

    cd appengine-custom-runtimes-samples/nginx
    

Hello World auf einem lokalen Computer ausführen

Sie können die Beispielanwendung testen, indem Sie Docker herunterladen und installieren und anschließend den Hello World-Container auf dem lokalen Computer ausführen.

Es gibt keine spezifischen Schritte für App Engine, sodass Sie die Beispielanwendung mit den von Ihnen bevorzugten Tools und Verfahren testen können.

"Hello World" in App Engine bereitstellen

Wenn Sie bereit sind, die Beispielanwendung in App Engine bereitzustellen, führen Sie diese Schritte aus:

  1. Führen Sie in dem Verzeichnis, in dem sich app.yaml und Dockerfile befinden, den folgenden Befehl aus:

    gcloud app deploy
    

    Hier finden Sie Informationen zu optionalen Flags.

  2. Starten Sie mit dem folgenden Befehl Ihren Browser, um zu prüfen, wie Ihre Anwendung unter https://PROJECT_ID.REGION_ID.r.appspot.com ausgeführt wird:

    gcloud app browse
    

Häufig verwendete gcloud-Befehls-Flags

  • Verwenden Sie das Flag --version, um eine eindeutige ID festzulegen, die die Version Ihrer Anwendung angibt. Andernfalls wird automatisch eine ID generiert. Beispiel: --version [YOUR_VERSION_ID]
  • Verwenden Sie das Flag --project, um eine andere Google Cloud-Projekt-ID als jene anzugeben, die Sie im gcloud-Tool als Standard initialisiert haben. Beispiel: --project [YOUR_PROJECT_ID]

Beispiel:

gcloud app deploy --version pre-prod-5 --project my-sample-app

Weitere Informationen zum Bereitstellen der Anwendung über die Befehlszeile finden Sie unter Anwendung bereitstellen und testen. Eine Liste aller Befehls-Flags finden Sie in der Referenz zu gcloud app deploy.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte

Weitere Informationen zu Dockerfiles finden Sie in der Dockerfile-Referenz.

Benutzerdefinierte Laufzeiten erstellen

Codeüberprüfung

"Hello World" ist die am einfachsten realisierbare App Engine-Anwendung, da sie nur einen einzigen Container erstellt, der nur eine einzige Version und einen einzigen Dienst ausführt. In diesem Abschnitt werden die einzelnen Dateien der Anwendung im Detail beschrieben.

app.yaml

Gibt die Konfiguration der App an. Die app.yaml-Datei muss sich im selben Verzeichnis befinden wie die Dockerfile-Datei.

runtime: custom
env: flex

Der Eintrag runtime: custom weist App Engine an, nach einem Dockerfile zu suchen, das das Image Ihrer Laufzeit definiert, und env: flex gibt an, dass Sie die Bereitstellung in der flexiblen Umgebung vornehmen.

Weitere Informationen finden Sie in der app.yaml-Referenz.

Dockerfile

Definiert die Anleitung, mit der das Docker-Image für den Container der Beispielanwendung erstellt wird. Die Datei Dockerfilemuss sich im selben Verzeichnis befinden wie die Datei app.yaml. Dieses Dockerfile installiert den nginx-Webserver und kopiert einige einfache Konfigurationseinstellungen.

# The standard nginx container just runs nginx. The configuration file added
# below will be used by nginx.
FROM nginx

# Copy the nginx configuration file. This sets up the behavior of nginx, most
# importantly, it ensure nginx listens on port 8080. Google App Engine expects
# the runtime to respond to HTTP requests at port 8080.
COPY nginx.conf /etc/nginx/nginx.conf

# create log dir configured in nginx.conf
RUN mkdir -p /var/log/app_engine

# Create a simple file to handle health checks. Health checking can be disabled
# in app.yaml, but is highly recommended. Google App Engine will send an HTTP
# request to /_ah/health and any 2xx or 404 response is considered healthy.
# Because 404 responses are considered healthy, this could actually be left
# out as nginx will return 404 if the file isn't found. However, it is better
# to be explicit.
RUN mkdir -p /usr/share/nginx/www/_ah && \
    echo "healthy" > /usr/share/nginx/www/_ah/health

# Finally, all static assets.
ADD www/ /usr/share/nginx/www/
RUN chmod -R a+r /usr/share/nginx/www

Der Befehl FROM erstellt mit dem offiziellen Docker-Image für den nginx-Webserver ein Basis-Image.

Mit diesem Dockerfile ist "nginx" in Ihrem Container-Image enthalten und der gesamte Inhalt im Verzeichnis www/ steht Ihrer Anwendung zur Verfügung.

Die "Hello World"-Beispielanwendung enthält außerdem die Datei nginx.conf mit den grundlegenden nginx-Konfigurationsinformationen und die Datei index.html, die als Stammseite für den nginx-Webserver dient.