Startskript erstellen

Auf dieser Seite wird beschrieben, wie Sie ein Startskript für den Webdienst erstellen und dann das Script validieren.

Damit der Webdienst nicht manuell gestartet werden muss, müssen Sie ein Startskript erstellen.Das Startskript führt folgende Aufgaben aus:

  • Liest die Metadaten der virtuellen Maschine (VM) und legt die Umgebungsvariable für Metadaten mit dem Präfix CONNECTOR_ENV fest. Alle für Nutzer erforderlichen Daten werden während der VM-Erstellung aus dem Marketplace übernommen und in Docker als Umgebungsvariablen festgelegt. Diese Umgebungsvariablen können dann in der Anwendung gelesen und entsprechend verarbeitet werden.
  • Startet den Docker-Container mit dem Webdienst mit den entsprechenden Umgebungsvariablen.

Der folgende Code ist ein Beispiel für ein Startskript:

#!/bin/bash

# 1. Fetch Metadata Keys
metadata_keys_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/"
metadata_keys=$(curl -H "Metadata-Flavor: Google" "$metadata_keys_url")

# 2. Set Environment Variables for CONNECTOR_ENV Keys (with error handling)
for key in $metadata_keys; do
  if [[ $key == CONNECTOR_ENV_* ]]; then
    metadata_value_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/$key"

    # Fetch value with error handling
    value=$(curl -H "Metadata-Flavor: Google" "$metadata_value_url" 2>/dev/null)
    if [[ -z "$value" ]]; then
      echo "Warning: No value found for key '$key'. Skipping." >&2 # Log the warning to stderr
      continue  # Skip to the next iteration
    fi
    export "$key=$value"
  fi
done

# 3. Run Docker with Environment Variables
sudo docker stop connector-service || true
sudo docker run \
  --name connector-service \
 $(env | grep CONNECTOR_ENV_ | sed 's/=/="/;s/$/"/' | sed 's/^/-e /') \
 -d -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT \
 --restart=unless-stopped \
  connector-container

Startskript validieren

  1. Fügen Sie der VM-Instanz die Metadaten für den Anschluss und alle anderen Parameter hinzu, die bei der VM-Erstellung erforderlich sind.
    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata=CONNECTOR_ENV_PORT=8081
  2. Bearbeiten Sie die VM über die Benutzeroberfläche und fügen Sie das im Abschnitt „Automatisierung“ erwähnte Startskript hinzu.

    Sie können auch den folgenden gcloud-Befehl verwenden:

    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata-from-file startup-script=gcp-start.sh
  3. Nachdem Sie das Startskript hinzugefügt haben, stellen Sie eine SSH-Verbindung zur VM her und führen Sie den folgenden Befehl aus:
    sudo google_metadata_script_runner startup
  4. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass der Docker-Container auf dem angegebenen Port ausgeführt wird.
    sudo docker ps
  5. Führen Sie den folgenden Befehl aus, um den Docker-Dienst zu beenden und zu entfernen. Nach dem Test darf der Dienst nicht mehr auf der VM ausgeführt werden.
    sudo docker rm -f connector-service
  6. Nächste Schritte