Auf dieser Seite wird beschrieben, wie Sie Dienste in Cloud Run mit einer Datei bereitstellen, die auf der Compose-Spezifikation basiert.
Sie haben folgende Möglichkeiten, eine Compose-Datei in Cloud Run bereitzustellen:
Die Verwendung von Compose für die Bereitstellung in Cloud Run 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-(IaC-)Umgebung empfehlen wir die Verwendung von Terraform.
Beschränkungen
- Bei der Compose-Bereitstellung wird ein einzelner Cloud Run-Dienst mit mehreren Containern bereitgestellt.
- Bei der Compose-Bereitstellung wird nur ein Teil der unterstützten Cloud Run-Funktionen übersetzt.
- Für Dienste, die mit Compose erstellt wurden, ist standardmäßig 1 maximale Instanz festgelegt.
- Die Bereitstellung wird zwar vereinfacht, aber „Cloud Run Compose deploy“ ist kein Ersatz für eine 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 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"
Dienste bereitstellen
Führen Sie den Befehl
gcloud beta run compose upaus, um die Dienste bereitzustellen:gcloud beta run compose up compose.yamlAntworten Sie mit
yauf alle Aufforderungen, erforderliche 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 Quelle bereitstellen
Definieren Sie Ihre Dienste in einer compose.yaml-Datei und stellen Sie sie bereit, indem Sie sie aus dem Quellcode erstellen. Weitere Informationen finden Sie unter Dienste aus Quellcode bereitstellen.
Beispiel: Anwendung mit einem Dienst
Das folgende Beispiel zeigt eine compose.yaml-Datei für einen Webdienst, der aus dem Quellcode im aktuellen Verzeichnis erstellt wird.
services:
web:
build: .
ports:
- "8080:8080"
Dienste bereitstellen
Erstellen Sie in Ihrem Projektverzeichnis eine
compose.yaml-Datei mit Ihren Dienstdefinitionen.Führen Sie den Befehl
gcloud beta run compose upaus, um die Dienste bereitzustellen:gcloud beta run compose up compose.yamlAntworten Sie mit
yauf alle Aufforderungen, erforderliche 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.
Unterstützte Features
Wenn Sie die Bereitstellung mit einer compose.yaml-Datei vornehmen, 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 Einwilligung gebeten, bevor sie erstellt werden.
Cloud Run unterstützt die folgenden Compose-Funktionen:
| Feld zum Verfassen | Cloud Run-Zuordnung und ‑Beschreibung |
|---|---|
services |
Dienste werden einzelnen Containern im bereitgestellten Cloud Run-Dienst zugeordnet. |
volumes |
Teilweise unterstützt. Übersetzt |
secrets |
Unterstützt. Secret Manager verwenden |
configs |
Unterstützt. Cloud Storage verwenden |
build |
Cloud Build erstellt den Container mit dem Build-Kontext, taggt ihn und überträgt ihn per Push in das |
image |
Stellt ein vordefiniertes Container-Image aus einer unterstützten Registry bereit. Verwenden Sie diese Option, wenn Sie ein vorgefertigtes Image haben. Es werden nur Docker Hub- und Artifact Registry-Images unterstützt. Bei benutzerdefinierten Images können Sie Images in Artifact Registry hochladen und verwenden. |
ports |
Eine Liste von Portzuordnungen, z. B. |
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 |
cpu_count/cpus |
Ein Hinweis zum Festlegen von CPU- und Arbeitsspeicherlimits für Cloud Run, wobei Ressourcen automatisch nach der folgenden Logik zugewiesen werden:
|
container_name |
Legt den Namen des Containers für die Abhängigkeitsauflösung fest. Wenn nichts angegeben ist, wird standardmäßig der Dienstname verwendet. |
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 ist, stellt die gcloud CLI Secret Manager-Secrets zum Speichern dieser Daten bereit.
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 zur Verwaltung dieser Daten bereit. Pro Bereitstellung wird ein Bucket erstellt. Volumes und Konfigurationen werden durch Ordner getrennt.
- Benannte Volumes: Im Bucket wird ein leerer Ordner erstellt, der dem Volumennamen entspricht.
- Bind Mounts: Bei Bind Mounts lädt Cloud Run den Inhalt des lokalen Quellverzeichnisses vor dem Bereitstellen 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 bereitgestellte 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 in die Datei /etc/hosts ein. 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
- Weitere Informationen zum Einrichten der Authentifizierung
- Secrets verwalten