Auf dieser Seite wird beschrieben, wie Sie Dienste mit einer Datei , die auf der Compose-Spezifikation basiert, in Cloud Run bereitstellen.
Sie können mit einer Compose-Datei auf folgende Arten in Cloud Run bereitstellen:
Die Bereitstellung in Cloud Run mit Compose ist ideal für die Entwicklung und vereinfacht den Übergang von Ihrer lokalen Umgebung zu einer Cloud-Umgebung. So können Sie ein einheitliches Konfigurationsformat für Ihre lokalen und bereitgestellten Anwendungen beibehalten.
Für die Verwaltung von Produktionsumgebungen in einer Infrastruktur-als-Code-Umgebung (Infrastructure as Code, IaC) empfehlen wir die Verwendung von Terraform.
Beschränkungen
- Bei der Bereitstellung mit Compose wird ein einzelner Cloud Run-Dienst mit mehreren Containern bereitgestellt.
- Bei der Bereitstellung mit Compose wird nur ein Teil der unterstützten Cloud Run-Funktionen übersetzt.
- Für mit Compose erstellte Dienste ist standardmäßig eine maximale Anzahl von Instanzen von 1 festgelegt.
- Die Bereitstellung mit Cloud Run Compose vereinfacht zwar die Bereitstellung, ersetzt aber keine umfassende Infrastruktur-als-Code-Strategie für Produktionsumgebungen.
Dienste aus Container-Images mit Compose bereitstellen
Definieren Sie Ihre Dienste in einer compose.yaml-Datei und stellen Sie sie aus vorhandenen Container-Images bereit. Weitere Informationen finden Sie unter Container-Images bereitstellen.
Beispiel: Anwendung mit einem einzelnen Dienst
Das folgende Beispiel zeigt eine compose.yaml-Datei für einen Webdienst, der ein vordefiniertes Container-Image verwendet.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
Dienst bereitstellen
Führen Sie den Befehl
gcloud run compose upaus, um die Dienste bereitzustellen:gcloud run compose up compose.yamlAntworten Sie mit
yauf alle Aufforderungen, die erforderlichen Komponenten zu installieren oder APIs zu aktivieren.Optional: Veröffentlichen Sie Ihren Dienst , wenn Sie den nicht authentifizierten Zugriff auf den Dienst zulassen möchten.
Nach der Bereitstellung wird die Cloud Run-Dienst-URL angezeigt. Kopieren Sie diese URL und fügen Sie sie in Ihren Browser ein, um den ausgeführten Container aufzurufen. Sie können die Standardauthentifizierung in der Google Cloud Console deaktivieren.
Mit Compose aus Quellcode bereitstellen
Definieren Sie Ihre Dienste in einer compose.yaml-Datei und stellen Sie sie bereit, indem Sie sie aus Quellcode erstellen. Weitere Informationen finden Sie unter Dienste aus Quellcode bereitstellen.
Beispiel: Anwendung mit einem einzelnen Dienst
Das folgende Beispiel zeigt eine compose.yaml-Datei für einen Webdienst, der aus Quellcode im aktuellen Verzeichnis erstellt wird.
services:
web:
build: .
ports:
- "8080:8080"
Dienste bereitstellen
Erstellen Sie im Projektverzeichnis eine
compose.yaml-Datei mit Ihren Dienstdefinitionen.Führen Sie den Befehl
gcloud run compose upaus, um die Dienste bereitzustellen:gcloud run compose up compose.yamlAntworten Sie mit
yauf alle Aufforderungen, die erforderlichen Komponenten zu installieren oder APIs zu aktivieren.Optional: Veröffentlichen Sie Ihren Dienst wenn Sie den nicht authentifizierten Zugriff auf den Dienst zulassen möchten.
Nach der Bereitstellung wird die Cloud Run-Dienst-URL angezeigt. Kopieren Sie diese URL und fügen Sie sie in Ihren Browser ein, um den ausgeführten Container aufzurufen. Sie können die Standardauthentifizierung in der Google Cloud Console deaktivieren.
Neuerstellung erzwingen
Standardmäßig überspringt die Bereitstellung mit Cloud Run Compose den Build-Prozess, wenn sich der Quellcode seit dem letzten Build nicht geändert hat. Wenn Sie eine
Neuerstellung aller Dienste erzwingen möchten, die mit einer build Konfiguration definiert wurden, verwenden Sie das --build
Flag so:
gcloud run compose up compose.yaml --build
Dies ist besonders nützlich, wenn ein Remote-Repository, ein Image oder ein Digest gelöscht wurde, Ihr lokaler Quellcode aber gleich geblieben ist. Die Flags --build und --no-build schließen sich gegenseitig aus.
Unterstützte Features
Wenn Sie mit einer compose.yaml-Datei bereitstellen, kann Cloud Run
automatisch andere Google Cloud Ressourcen bereitstellen, die in Ihrer
Compose-Datei definiert sind. Wenn Ressourcen erforderlich sind, werden Sie von Cloud Run um Ihre Zustimmung gebeten, bevor sie erstellt werden.
Cloud Run unterstützt die folgende Teilmenge der Compose-Features:
| Compose-Feld | Cloud Run-Zuordnung und -Beschreibung |
|---|---|
services |
Dienste werden einzelnen Containern im bereitgestellten Cloud Run-Dienst zugeordnet. |
volumes |
Teilweise unterstützt. Übersetzt |
secrets |
Unterstützt. Verwendet Secret Manager. |
configs |
Unterstützt. Verwendet Cloud Storage. |
build |
Unterstützt. Erstellt den Container mit dem Build-Kontext, taggt ihn und überträgt ihn per Push in das Repository |
image |
Stellt ein vordefiniertes Container-Image aus einer unterstützten Registry bereit. Verwenden Sie diese Option, wenn Sie ein vordefiniertes Image haben. Unterstützt nur Docker Hub- und Artifact Registry-Images. Bei benutzerdefinierten Images können Sie Images in Artifact Registry übertragen und sie verwenden. |
ports |
Eine Liste von Portzuordnungen wie |
expose |
Eine Liste der Ports, die verfügbar gemacht, aber nicht veröffentlicht werden sollen, z. B. |
depends_on |
Definiert die Startreihenfolge der Container. So wird sichergestellt, dass für jeden in |
cpus |
Ein Hinweis zum Festlegen von CPU- und Arbeitsspeicherlimits für Cloud Run. Ressourcen werden automatisch nach der folgenden Logik zugewiesen:
|
container_name |
Legt den Namen des Containers für die Abhängigkeitsauflösung fest. Standardmäßig wird der Dienstname verwendet, wenn nichts angegeben ist. |
environment |
Übergibt Umgebungsvariablen an den entsprechenden Container in Cloud Run. |
command |
Überschreibt den Standardbefehl des Containers, der vom Container deklariert wird, indem er dem Attribut |
entrypoint |
Unterstützt. |
env_file |
Unterstützt. |
x-google-cloudrun:ingress-container |
(Erweiterung) Fügen Sie diese Google-spezifische Erweiterung einem Dienst hinzu und legen Sie sie auf |
x-google-cloudrun:volume-type: in-memory |
(Erweiterung) Fügen Sie diese Google-spezifische Erweiterung einem Volume hinzu und legen Sie sie auf |
Secrets, die Secret Manager zugeordnet sind
Wenn in Ihrer compose.yaml-Datei secrets definiert sind, stellt die gcloud CLI Secret Manager-Secrets bereit, um diese Daten zu speichern.
Volumes und Konfigurationen, die Cloud Storage zugeordnet sind
Wenn in Ihrer compose.yaml-Datei volumes oder configs auf oberster Ebene definiert sind, stellt die gcloud CLI einen Cloud Storage-Bucket bereit, um diese Daten zu verwalten. Pro Bereitstellung wird ein einzelner Bucket erstellt, wobei Volumes und Konfigurationen durch Ordner getrennt werden.
- Benannte Volumes: Im Bucket wird ein leerer Ordner mit dem Namen des Volumes erstellt.
- Bind-Mounts: Bei Bind-Mounts lädt Cloud Run den Inhalt des lokalen Quellverzeichnisses vor der Bereitstellung in einen Ordner im Bucket hoch.
- Konfigurationen: Für jede Konfiguration, die mit einer
file:Quelle definiert ist, lädt Cloud Run den Inhalt der lokalen Datei in einen Ordner im Bucket hoch.
Erforderliche Rollen
Während der Bereitstellung weist Cloud Run der Dienstidentität des bereitgestellten Dienstes automatisch die erforderlichen Rollen für den Zugriff auf die bereitgestellten Ressourcen zu:
- Cloud Storage-Bucket:
roles/storage.objectUser - Secret Manager-Secrets:
roles/secretmanager.secretAccessor
Kommunikation zwischen Containern derselben Instanz
Cloud Run fügt in jedem Container einen Eintrag zur Datei /etc/hosts hinzu. Dieser Eintrag ordnet die Dienstnamen aus Ihrer compose.yaml-Datei ihren internen IP-Adressen zu. So können Dienste über ihre Dienstnamen miteinander kommunizieren.
Nächste Schritte
- Weitere Informationen zum Verwalten von Diensten.
- Informationen zum Einrichten der Authentifizierung
- Informationen zum Verwalten von Secrets.