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
Per eseguire il deployment dei servizi, esegui il comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlRispondi
ya eventuali richieste di installazione dei componenti necessari o di abilitazione delle 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 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.yamlcon le definizioni del servizio.Per eseguire il deployment dei servizi, esegui il comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlRispondi
ya eventuali richieste di installazione dei componenti necessari o di attivazione delle 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 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 |
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 |
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 |
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 |
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:
|
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 |
entrypoint |
Supportato. |
env_file |
Supportato. |
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, 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
- Scopri di più sulla gestione dei servizi.
- Scopri di più sulla configurazione dell'autenticazione.
- Scopri come gestire i secret.