Esegui il deployment dei servizi utilizzando Compose

Questa pagina descrive come eseguire il deployment dei servizi su Cloud Run utilizzando un file basato sulla specifica Compose.

Puoi eseguire il deployment in Cloud Run con un file Compose nei seguenti modi:

L'utilizzo di Compose per il deployment su Cloud Run è ideale per lo sviluppo e semplifica la transizione dall'ambiente locale a un ambiente cloud. Consente di mantenere un formato di configurazione coerente per le applicazioni locali e quelle di cui è stato eseguito il deployment.

Per la gestione degli ambienti di produzione in un ambiente Infrastructure as Code (IaC), ti consigliamo di utilizzare Terraform.

Limitazioni

  • Il deployment di Compose esegue il deployment di un singolo servizio Cloud Run con più container.
  • Compose deployment traduce solo un sottoinsieme delle funzionalità Cloud Run supportate.
  • Per impostazione predefinita, i servizi creati utilizzando Compose sono impostati su 1 istanza massima.
  • Sebbene semplifichi il deployment, Cloud Run Compose deploy non sostituisce una strategia Infrastructure as Code completa per gli ambienti di produzione.

Deployment di servizi da immagini container con Compose

Definisci i tuoi servizi in un file compose.yaml ed esegui il deployment dalle immagini container esistenti. Per saperne di più, consulta Eseguire il deployment di immagini container.

Esempio: applicazione a servizio singolo

L'esempio seguente mostra un file compose.yaml per un servizio web che utilizza un'immagine container predefinita.

services:
  web:
    image: us-docker.pkg.dev/cloudrun/container/hello
    ports:
      - "8080:8080"

Esegui il deployment dei servizi

  1. Per eseguire il deployment dei servizi, esegui il comando gcloud beta run compose up:

    gcloud beta run compose up compose.yaml

  2. Rispondi y a eventuali richieste di installazione dei componenti necessari o di abilitazione delle API.

  3. (Facoltativo) Rendi pubblico il servizio se vuoi consentire l'accesso non autenticato al servizio.

    Dopo il deployment, viene visualizzato l'URL del servizio Cloud Run. Copia questo URL e incollalo nel browser per visualizzare il contenitore in esecuzione. Puoi disattivare l'autenticazione predefinita dalla console Google Cloud .

Eseguire il deployment dall'origine con Compose

Definisci i tuoi servizi in un file compose.yaml e implementali creando dal codice sorgente. Per saperne di più, vedi Eseguire il deployment dei servizi dal codice sorgente.

Esempio: applicazione a servizio singolo

L'esempio seguente mostra un file compose.yaml per un servizio web che viene creato dall'origine nella directory corrente.

services:
  web:
    build: .
    ports:
      - "8080:8080"

Esegui il deployment dei servizi

  • Nella directory del progetto, crea un file compose.yaml con le definizioni del servizio.

    1. Per eseguire il deployment dei servizi, esegui il comando gcloud beta run compose up:

      gcloud beta run compose up compose.yaml
    2. Rispondi y a eventuali richieste di installazione dei componenti necessari o di attivazione delle API.

    3. (Facoltativo) Rendi pubblico il servizio se vuoi consentire l'accesso non autenticato al servizio.

    Dopo il deployment, viene visualizzato l'URL del servizio Cloud Run. Copia questo URL e incollalo nel browser per visualizzare il contenitore in esecuzione. Puoi disattivare l'autenticazione predefinita dalla console Google Cloud .

Funzionalità supportate

Quando esegui il deployment utilizzando un file compose.yaml, Cloud Run può eseguire automaticamente il provisioning di altre risorse Google Cloud come definito nel file Compose. Se sono necessarie risorse, Cloud Run ti chiede il consenso prima di crearle.

Cloud Run supporta il seguente sottoinsieme di funzionalità di Compose:

Campo Scrivi Mapping e descrizione di Cloud Run
services

I servizi vengono mappati a singoli container nel servizio Cloud Run di cui è stato eseguito il deployment.

volumes

Parzialmente supportata. Converte i montaggi bind, volume e tmpfs negli equivalenti di Cloud Run.

secrets

Supportato. Utilizzo di Secret Manager.

configs

Supportato. Utilizzo di Cloud Storage.

build

Cloud Build crea il container utilizzando il contesto di build, il tagging e il push nel repository cloud-run-source-deploy in Artifact Registry.

image

Esegue il deployment di un'immagine container predefinita da un registro supportato. Utilizza questa opzione se hai un'immagine predefinita. Supporta solo le immagini Docker Hub e Artifact Registry. Per le immagini personalizzate, puoi eseguire il push delle immagini in Artifact Registry e utilizzarle.

ports

Un elenco di mappature delle porte, ad esempio 8080:8080, che determinano il container di ingresso.

expose

Un elenco di porte da esporre ma non pubblicare, ad esempio 3000, per assicurarsi che i servizi dipendenti abbiano una porta disponibile per la comunicazione.

depends_on

Definisce l'ordine di avvio del container. In questo modo, qualsiasi servizio elencato in run-compose ha una porta definita da ports o expose, in modo che altri container possano comunicare con esso.

cpu_count/cpus

Un suggerimento utilizzato per impostare i limiti di CPU e memoria di Cloud Run, allocando automaticamente le risorse in base alla seguente logica:

  • <= 2 CPU: 1Gi Memory
  • <= 4 CPU: 2Gi Memory
  • > 4 CPU: 4Gi Memory
container_name

Imposta il nome del container per la risoluzione delle dipendenze, impostando per impostazione predefinita il nome del servizio se non specificato.

environment

Passa le variabili di ambiente al container corrispondente in Cloud Run.

command

Esegue l'override del comando predefinito del container, dichiarato dal container, eseguendo il mapping all'attributo args in Cloud Run; ad esempio, l'istruzione CMD di un Dockerfile.

entrypoint

Supportato.

env_file

Supportato.

x-google-cloudrun:ingress-container

(Estensione) Aggiungi questa estensione specifica di Google a un servizio e impostala su true per contrassegnarla come contenitore di ingresso che riceve tutto il traffico esterno.

x-google-cloudrun:volume-type: in-memory

(Estensione) Aggiungi questa estensione specifica di Google a un volume e impostala su in-memory anziché sul volume predefinito supportato da Cloud Storage.

Secret mappati a Secret Manager

Se il file compose.yaml definisce secrets, gcloud CLI provisiona i secret di Secret Manager per archiviare questi dati.

Volumi e configurazioni mappati su Cloud Storage

Se il file compose.yaml definisce volumes o configs di primo livello, gcloud CLI esegue il provisioning di un bucket Cloud Storage per gestire questi dati. Viene creato un singolo bucket per ogni deployment, utilizzando le cartelle per separare volumi e configurazioni.

  • Volumi denominati: nel bucket viene creata una cartella vuota corrispondente al nome del volume.
  • Montaggi bind: per i montaggi bind, Cloud Run carica i contenuti della directory di origine locale in una cartella del bucket prima del deployment.
  • Configurazioni: per ogni configurazione definita con un'origine file:, Cloud Run carica i contenuti del file locale in una cartella del bucket.

Ruoli obbligatori

Durante il deployment, Cloud Run concede automaticamente all'identità di servizio del servizio di cui è stato eseguito il deployment i ruoli necessari per accedere alle risorse di cui è stato eseguito il provisioning:

  • Bucket Cloud Storage: roles/storage.objectUser
  • Secret di Secret Manager: roles/secretmanager.secretAccessor

Comunicazione tra i container della stessa istanza

Cloud Run aggiunge una voce al file /etc/hosts in ogni container. Questa voce mappa i nomi dei servizi del file compose.yaml ai relativi indirizzi IP interni, il che consente ai servizi di comunicare tra loro utilizzando i nomi dei servizi.

Passaggi successivi