Durante lo sviluppo, puoi eseguire e testare la tua 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 Google Cloud servizi.
Prima di iniziare
Se è la prima volta che provi a eseguire localmente, potresti non disporre di tutte le autorizzazioni necessarie per accedere all'immagine dal registro container supportato che stai utilizzando.
Consulta la documentazione del registro container supportato per scoprire come ottenere l'accesso. Puoi configurare Docker per accedere ad Artifact Registry utilizzando l' helper delle credenziali gcloud CLI:
gcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION con il nome della regione del repository container, ad esempio us-west2.
Testare localmente
Puoi eseguire test localmente utilizzando Docker, Docker con Google Cloud Access, 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 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 segue il formato diLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.La variabile di ambiente
PORTspecifica la porta che l'applicazione utilizzerà per ricevere le richieste HTTP o HTTPS. Questo è un requisito del contratto di runtime del container. In questo esempio, utilizziamo la porta 8080.Apri http://localhost:9090 nel browser.
Se non hai mai lavorato con i container, ti consigliamo di consultare la guida introduttiva a Docker. Per saperne di più sui comandi Docker, consulta la documentazione di Docker.
Docker con accesso a Google Cloud
Se utilizzi le Google Cloud librerie client per integrare la tua applicazione con i Google Cloud servizi e non hai ancora protetto questi servizi per controllare l'accesso esterno, puoi configurare il container locale per l' autenticazione con i Google Cloud servizi utilizzando le credenziali predefinite dell'applicazione.
Per eseguire localmente:
Consulta le istruzioni per configurare una account di servizio account.
I seguenti flag di esecuzione di Docker inseriscono le credenziali e la configurazione dal sistema locale nel container locale:
- Utilizza il flag
--volume(-v) per inserire il file delle credenziali nel container (presupponendo che tu abbia già impostato la variabile di ambienteGOOGLE_APPLICATION_CREDENTIALSsulla tua macchina):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- Utilizza il flag
--environment(-e) per impostare la variabileGOOGLE_APPLICATION_CREDENTIALSall'interno del container:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- Utilizza il flag
Facoltativamente, utilizza questo comando
rundi 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 container./tmp/keys/FILE_NAME.json
Tuttavia, funzioneranno anche altre posizioni delle directory. Il requisito fondamentale è che la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALSdeve corrispondere alla posizione di montaggio di collegamento all'interno del container.Tieni presente inoltre che, con alcuni Google Cloud servizi, potresti voler utilizzare una configurazione alternativa per isolare la risoluzione dei problemi locali dalle prestazioni di produzione e dai dati.
Emulatore Cloud Code
Il plug-in Cloud Code per VS Code e JetBrains IDE ti consente di eseguire ed eseguire il debug localmente dell'immagine container in un emulatore Cloud Run all'interno dell'IDE. L'emulatore ti consente di configurare un ambiente rappresentativo del servizio in esecuzione su Cloud Run.
Puoi configurare proprietà come l'allocazione di CPU e memoria, specificare le variabili di ambiente e impostare le connessioni al database Cloud SQL.
- Installa Cloud Code per VS Code o un IDE JetBrains.
- Segui le istruzioni per lo sviluppo e il debug locali all'interno dell'IDE.
- VS Code: sviluppo e debug locali
- IntelliJ: sviluppo e debug locali
gcloud CLI
Google Cloud CLI contiene un ambiente di sviluppo locale per emulare Cloud Run in grado di creare un container dal codice sorgente, eseguire il container sulla macchina locale e ricompilare automaticamente il container in caso di modifiche al codice sorgente.
Per avviare l'ambiente di sviluppo locale:
Cambia directory nella directory contenente il codice sorgente del servizio.
Richiama il comando:
Se nella directory locale è presente un Dockerfile, viene utilizzato per creare il container. Se non è presente alcun Dockerfile, il container viene creato con i buildpack di Google Cloud.gcloud beta code dev
Per visualizzare il servizio in esecuzione, visita 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:
- macOS e Linux: Control-C
- Windows: Control-Break
Personalizzare la configurazione del servizio
Puoi personalizzare la configurazione di 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 in
ella directory corrente. Se non ne viene trovato nessuno, verrà utilizzato qualsiasi file che termina con *.service.yaml.
Puoi configurare le seguenti impostazioni per lo sviluppo locale:
- Variabili di ambiente
- Limiti di memoria del container
- Limiti di CPU del container
- Nome servizio
- Service account
Il campo image del container non è obbligatorio per lo sviluppo locale, perché l'immagine
viene creata e fornita al servizio quando viene eseguito il comando.
Puoi utilizzare il seguente file service.dev.yaml di esempio per lo sviluppo locale:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
Testare utilizzando le credenziali
Per concedere l'autorizzazione al container di utilizzare i servizi Google Cloud , devi fornirgli una credenziale di accesso.
Per concedere al container l'accesso a una credenziale utilizzando il tuo account, accedi utilizzando 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
Verificare che il codice sia in esecuzione localmente
Quando esegui test localmente su Cloud Run, puoi verificare nel codice che il container sia in esecuzione localmente controllando la variabile di ambiente K_REVISION, che Cloud Run rende disponibile per tutti i container.
Docker
Per verificare che il codice sia in esecuzione localmente su Google Cloud CLI, puoi provare a 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 che il codice sia in esecuzione 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 che il codice sia in esecuzione localmente su Cloud Code, puoi eseguire una query sulla variabile di ambiente K_REVISION e cercare il valore local per verificare che sia in esecuzione localmente.
gcloud CLI
Per verificare che il codice sia in esecuzione localmente su Google Cloud CLI, puoi eseguire una query sulla variabile di ambiente K_REVISION e cercare un valore che inizia con dev- per verificare che sia in esecuzione localmente.
Passaggi successivi
- Per scoprire come risolvere i problemi di un'applicazione Cloud Run danneggiata localmente, consulta il tutorial Risoluzione dei problemi locali di un servizio Cloud Run.
- Per scoprire come eseguire il deployment dei container creati, consulta la sezione Eseguire il deployment dei servizi.