Durante lo sviluppo, puoi eseguire e testare l'immagine container localmente, prima del deployment. Puoi utilizzare Cloud Code o Docker installato localmente per eseguire e testare localmente, inclusa l'esecuzione locale con accesso ai servizi Google Cloud.
Prima di iniziare
Se è la prima volta che provi a eseguire l'operazione localmente, potresti non disporre di tutte le autorizzazioni necessarie per accedere all'immagine dal registry dei container supportato che stai utilizzando.
Consulta la documentazione del registry dei container supportato per scoprire come ottenere l'accesso. Puoi configurare Docker per ottenere l'accesso ad Artifact Registry utilizzando l'assistente alle credenziali gcloud CLI
gcloud auth configure-docker LOCATION-docker.pkg.dev
Eseguire il test localmente
Puoi eseguire il test in locale utilizzando Docker, Docker con accesso a Google Cloud, l'emulatore Cloud Code o Google Cloud CLI. Seleziona la scheda appropriata per le istruzioni.
Docker
Per testare l'immagine container localmente utilizzando Docker:
Utilizza il comando Docker:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
Sostituisci IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.La variabile di ambiente
PORT
specifica la porta che verrà utilizzata dall'applicazione per ascoltare le richieste HTTP o HTTPS. Questo è un requisito del contratto runtime container. In questo esempio utilizziamo la porta 8080.Apri http://localhost:9090 nel browser.
Se non hai mai utilizzato i contenitori, ti consigliamo di consultare la guida Introduzione a Docker. Per scoprire di più sui comandi Docker, consulta la documentazione di Docker.
Docker con accesso a Google Cloud
Se utilizzi le librerie client di Google Cloud per integrare la tua applicazione con i servizi Google Cloud e non hai ancora protetto questi servizi per controllare l'accesso esterno, puoi configurare il contenitore locale in modo che si autentichi con i servizi Google Cloud utilizzando le credenziali predefinite dell'applicazione.
Per eseguire l'app localmente:
Consulta la sezione Iniziare a utilizzare l'autenticazione per istruzioni su come generare, recuperare e configurare le credenziali dell'account di servizio.
I seguenti flag di esecuzione di Docker iniettano le credenziali e la configurazione del sistema locale nel container locale:
- Utilizza il flag
--volume
(-v
) per iniettare il file delle credenziali nel contenitore (si presume che tu abbia già impostato la variabile di ambienteGOOGLE_APPLICATION_CREDENTIALS
sulla tua macchina):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- Utilizza il flag
--environment
(-e
) per impostare la variabileGOOGLE_APPLICATION_CREDENTIALS
all'interno del contenitore:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- Utilizza il flag
Se vuoi, utilizza questo comando
run
Docker completamente configurato:PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \ IMAGE_URL
Tieni presente che il percorso
mostrato nell'esempio precedente è una posizione ragionevole per inserire le credenziali all'interno del contenitore./tmp/keys/FILE_NAME.json
Tuttavia, funzioneranno anche altre posizioni della directory. Il requisito fondamentale è che la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
debba corrispondere alla posizione del montaggio del vincolo all'interno del contenitore.Tieni inoltre presente che, con alcuni servizi Google Cloud, potresti voler utilizzare una configurazione alternativa per isolare la risoluzione dei problemi locali dal rendimento e dai dati di produzione.
Emulatore Cloud Code
Il plug-in Cloud Code per VS Code e gli IDE JetBrains consente di eseguire ed eseguire il debug dell'immagine del contenitore in locale in un emulatore Cloud Run all'interno dell'IDE. L'emulatore ti consente di configurare un ambiente rappresentativo del tuo servizio in esecuzione su Cloud Run.
Puoi configurare proprietà come l'allocazione della CPU e della memoria, specificare le variabili di ambiente e impostare le connessioni ai database Cloud SQL.
Interfaccia a riga di comando gcloud
Google Cloud CLI contiene un ambiente di sviluppo locale per emulare Cloud Run che può creare un container dal codice sorgente, eseguirlo sulla tua macchina locale e ricostruirlo automaticamente in caso di modifiche al codice sorgente.
Per avviare l'ambiente di sviluppo locale:
Passa alla directory contenente il codice sorgente del servizio.
Richiama il comando:
Se nella directory locale è presente un Dockerfile, viene utilizzato per compilare il container. Se non è presente alcun Dockerfile, il container viene compilato con i buildpack di Google Cloud.gcloud beta code dev
Per vedere il servizio in esecuzione, visita la pagina http://localhost:8080/ nel browser.
Se hai specificato una porta personalizzata con l'opzione --local-port
, ricordati di aprire il browser su quella porta.
Per arrestare il server locale:
- Mac OS e Linux: Ctrl+C
- Windows: Control-Break
Personalizzare la configurazione del servizio
Puoi personalizzare la configurazione Cloud Run del servizio in esecuzione localmente utilizzando un file YAML. Il formato YAML è lo stesso che può essere utilizzato per eseguire il deployment di un servizio Cloud Run, ma supporta solo un sottoinsieme delle impostazioni del servizio Cloud Run. gcloud beta
code dev
cerca e utilizza qualsiasi file che termina con *.service.dev.yaml
nella directory corrente. Se non ne viene trovato nessuno, verrà utilizzato qualsiasi file che termina con
*.service.yaml
.
Per lo sviluppo locale puoi configurare le seguenti impostazioni:
- Variabili di ambiente
- Limiti di memoria del contenitore
- Limiti di CPU del container
- Nome servizio
- Service account
Il campo contenitore image
non è obbligatorio per lo sviluppo locale, perché l'immagine viene creata e fornita al servizio quando viene eseguito il comando.
Per lo sviluppo locale puoi utilizzare il seguente file service.dev.yaml
di esempio:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
Eseguire test utilizzando le credenziali
Per concedere al contenitore l'autorizzazione a utilizzare i servizi Google Cloud, devi fornire al contenitore una credenziale di accesso.
Per concedere al contenitore l'accesso a una credenziale utilizzando il tuo account, accedi con gcloud e utilizza il flag
--application-default-credential
:gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
Per fornire le credenziali dell'applicazione come account di servizio, utilizza il flag
--service-account
:gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
Il flag
--service-account
consente di scaricare una chiave dell'account di servizio e di memorizzarla nella cache a livello locale. L'utente è responsabile di mantenere la chiave al sicuro ed eliminarla quando non è più necessaria.
Verificare che il codice sia in esecuzione localmente
Quando esegui il test localmente su Cloud Run, puoi verificare nel codice che il contenitore sia in esecuzione localmente controllando la variabile di ambiente K_REVISION
, che Cloud Run rende disponibile per tutti i contenitori.
Docker
Per verificare di eseguire il codice localmente su Google Cloud CLI, puoi tentare di eseguire una query sulla variabile di ambiente K_REVISION
, ma poiché non è stata impostata, non sarà presente alcun valore.
Docker con accesso a Google Cloud
Se hai utilizzato i valori esatti della sezione precedente nel passaggio 3 per verificare di eseguire il codice localmente su Google Cloud CLI, puoi eseguire una query sulla variabile di ambiente K_REVISION
e cercare il valore dev-00001
per verificare che sia in esecuzione localmente.
Emulatore Cloud Code
Per verificare di eseguire il codice localmente su Cloud Code, puoi eseguire una query sulla variabile di ambiente K_REVISION
e cercare un valore local
per confermare che sia in esecuzione localmente.
Interfaccia a riga di comando gcloud
Per verificare di eseguire il codice localmente su Google Cloud CLI, puoi eseguire una query sulla variabile di ambiente K_REVISION
e cercare un valore che inizi con dev-
per verificare che sia in esecuzione localmente.
Passaggi successivi
- Per scoprire come risolvere i problemi di un'applicazione Cloud Run non funzionante localmente, consulta il tutorial sulla risoluzione dei problemi locali di un servizio Cloud Run.
- Per scoprire come eseguire il deployment dei container creati, consulta Eseguire il deployment dei servizi.