Questa pagina descrive come eseguire il deployment dei servizi in 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 in Cloud Run è ideale per lo sviluppo e semplifica la transizione dall'ambiente locale a un ambiente cloud. Ti consente di mantenere un formato di configurazione coerente sia per le applicazioni locali sia per quelle di cui è stato eseguito il deployment.
Per la gestione degli ambienti di produzione in un ambiente Infrastructure as Code (IaC) ambiente, ti consigliamo di utilizzare Terraform.
Limitazioni
- Il deployment di Compose esegue il deployment di un singolo servizio Cloud Run con più container.
- Il deployment di Compose traduce solo un sottoinsieme delle funzionalità di Cloud Run supportate.
- Per impostazione predefinita, i servizi creati utilizzando Compose sono impostati su 1 istanza massima.
- Sebbene semplifichi il deployment, il deployment di Cloud Run Compose non sostituisce una strategia Infrastructure as Code completa per gli ambienti di produzione.
Esegui il deployment dei servizi dalle immagini container con Compose
Definisci i servizi in un file compose.yaml ed esegui il deployment dalle immagini container esistenti. Per ulteriori informazioni, consulta Esegui il deployment delle 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 del servizio
Per eseguire il deployment dei servizi, esegui il comando
gcloud run compose up:gcloud run compose up compose.yamlRispondi
ya eventuali prompt per installare i componenti richiesti o per attivare le API.(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 container in esecuzione. Puoi disattivare l'autenticazione predefinita dalla Google Cloud console.
Esegui il deployment dal codice sorgente con Compose
Definisci i servizi in un file compose.yaml ed esegui il deployment creando dal codice sorgente. Per ulteriori informazioni, consulta Esegui 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 esegue la build dal codice sorgente nella directory corrente.
services:
web:
build: .
ports:
- "8080:8080"
Esegui il deployment dei servizi
Nella directory del progetto, crea un file
compose.yamlcon le definizioni dei servizi.Per eseguire il deployment dei servizi, esegui il comando
gcloud run compose up:gcloud run compose up compose.yamlRispondi
ya eventuali prompt per installare i componenti richiesti o per attivare le API.(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 container in esecuzione. Puoi disattivare l'autenticazione predefinita dalla Google Cloud console.
Forza una ricompilazione
Per impostazione predefinita, il deployment di Cloud Run Compose salta il processo di compilazione se il codice sorgente non è stato modificato dall'ultima build. Per forzare una
ricompilazione di tutti i servizi definiti con una build configurazione, utilizza il --build
flag come segue:
gcloud run compose up compose.yaml --build
Questa opzione è particolarmente utile se un repository, un'immagine o un digest remoto è stato eliminato, ma il codice sorgente locale rimane invariato. I flag --build e --no-build si escludono a vicenda.
Funzionalità supportate
Quando esegui il deployment utilizzando un file compose.yaml, Cloud Run può
eseguire automaticamente il provisioning di altre Google Cloud risorse 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 Compose | Mapping e descrizione di Cloud Run |
|---|---|
services |
I servizi vengono mappati ai singoli container nel servizio Cloud Run di cui è stato eseguito il deployment. |
volumes |
Supportata parzialmente. Converte i montaggi |
secrets |
Supportata. Utilizzo di Secret Manager. |
configs |
Supportata. Utilizzo di Cloud Storage. |
build |
Supportata. Crea il container utilizzando il contesto di build, eseguendo il tagging e il push nel repository |
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 di 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 |
expose |
Un elenco di porte da esporre ma non pubblicare, ad esempio |
depends_on |
Definisce l'ordine di avvio del container. In questo modo, qualsiasi servizio elencato in |
cpus |
Un suggerimento utilizzato per impostare i limiti di CPU e memoria di Cloud Run, allocando automaticamente le risorse in base alla seguente logica:
|
container_name |
Imposta il nome del container per la risoluzione delle dipendenze, impostando come predefinito 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 |
entrypoint |
Supportata. |
env_file |
Supportata. |
x-google-cloudrun:ingress-container |
(Estensione) Aggiungi questa estensione specifica di Google a un servizio e impostala su |
x-google-cloudrun:volume-type: in-memory |
(Estensione) Aggiungi questa estensione specifica di Google a un volume e impostala su |
Secret mappati a Secret Manager
Se il file compose.yaml definisce secrets, la gcloud CLI esegue il provisioning dei secret di Secret Manager per archiviare questi dati.
Volumi e configurazioni mappati a Cloud Storage
Se il file compose.yaml definisce volumes o configs di primo livello, la 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 di binding: per i montaggi di binding, 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à 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 dal file compose.yaml ai relativi indirizzi IP interni, il che consente ai servizi di comunicare tra loro utilizzando i nomi dei servizi.
Passaggi successivi
- Scopri di più sulla gestione dei servizi.
- Scopri come configurare l'autenticazione.
- Scopri come gestire i secret.