Durante lo sviluppo, puoi eseguire e testare l'immagine container in locale, prima al deployment. Puoi utilizzare Cloud Code o Docker installato in locale per l'esecuzione e il test in locale, inclusa l'esecuzione in locale con accesso ai servizi Google Cloud.
Prima di iniziare
Se è la prima volta che provi a eseguire un'esecuzione in locale, potresti non avere autorizzazioni necessarie per accedere all'immagine dal Container Registry supportato che stai utilizzando.
Per informazioni su come ottenere l'accesso, consulta la documentazione supportata di Container Registry. Puoi configurare Docker per ottenere l'accesso ad Artifact Registry utilizzando il Assistente per le credenziali dell'interfaccia a riga di comando gcloud
gcloud auth configure-docker LOCATION-docker.pkg.dev
Eseguire il test in locale
Puoi eseguire test in locale usando Docker, Docker con Google Cloud Access, l'emulatore Cloud Code o Google Cloud CLI. Seleziona la scheda appropriata per visualizzare le istruzioni.
Docker
Per testare l'immagine container in locale con 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à creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
di Google.La variabile di ambiente
PORT
specifica la porta su cui verrà eseguita l'applicazione per ascoltare le richieste HTTP o HTTPS. Si tratta di un requisito Contratto di runtime del container. Nel in questo esempio usiamo la porta 8080.Apri http://localhost:9090 nel browser.
Se non hai mai utilizzato i container, ti consigliamo di esaminare le Guida introduttiva di 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 dell'applicazione con i servizi Google Cloud e non hai ancora protetto per controllare l'accesso esterno, puoi configurare il tuo container locale devono eseguire l'autenticazione con i servizi Google Cloud Credenziali predefinite dell'applicazione.
Per l'esecuzione in locale:
Consulta la Guida introduttiva all'autenticazione. per istruzioni su come generare, recuperare e configurare l'account di servizio e credenziali.
I seguenti flag di esecuzione Docker inseriscono le credenziali e la configurazione da nel container locale:
- Utilizza il flag
--volume
(-v
) per inserire il file delle credenziali nel container (supponendo che tu abbia già impostato la variabile di ambienteGOOGLE_APPLICATION_CREDENTIALS
sul tuo computer):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- Utilizza il flag
--environment
(-e
) per impostare la variabileGOOGLE_APPLICATION_CREDENTIALS
all'interno del container:-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
Nota che il percorso
mostrato in l'esempio riportato sopra è una posizione ragionevole per posizionare le credenziali all'interno del container./tmp/keys/FILE_NAME.json
Tuttavia, funzioneranno anche altre posizioni della directory. Il requisito fondamentale è che la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
deve corrisponde alla posizione di montaggio di binding all'interno del container.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 IDE VS Code e JetBrains consente di eseguire localmente ed eseguire il debug dell'immagine container in un ambiente Cloud Run un emulatore all'interno del tuo IDE. L'emulatore ti consente di configurare un ambiente del tuo servizio in esecuzione su Cloud Run.
Puoi configurare proprietà come l'allocazione di CPU e memoria, specificare le variabili di ambiente e impostare Cloud SQL e connessioni ai database.
Interfaccia a riga di comando gcloud
Google Cloud CLI contiene un ambiente di sviluppo locale per l'emulazione in Cloud Run in grado di creare un container dall'origine, esegue il container sulla macchina locale e ricrea automaticamente il container all'origine modifiche al codice.
Per avviare l'ambiente di sviluppo locale:
Passa alla directory contenente il codice sorgente del tuo servizio.
Richiama il comando:
gcloud beta code dev
Se un Dockerfile è presente nella directory locale, viene utilizzato per creare nel container. Se non è presente un Dockerfile, il container viene creato con i buildpack di Google Cloud.
Per verificare che il tuo servizio sia in esecuzione, visita la pagina http://localhost:8080/ nel tuo browser.
Se hai specificato una porta personalizzata con l'opzione --local-port
, ricordati di
apri il browser su quella porta.
Per arrestare il server locale:
- Mac OS e Linux: Ctrl-C
- Windows: Ctrl-Interruzione
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 un sottoinsieme delle impostazioni del servizio Cloud Run. gcloud beta
code dev
cerca e utilizza tutti i file che terminano con *.service.dev.yaml
in
la 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 della CPU del container
- Nome servizio
- Account di servizio
Il campo container image
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
Esegui test utilizzando credenziali
Per autorizzare il container a utilizzare i servizi Google Cloud, devi fornire al container 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 assegnare 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
causa il download di una chiave dell'account di servizio e memorizzati localmente nella cache. L'utente è responsabile di conservare proteggerla e eliminarla quando non è più necessaria.
Verificare che il codice sia in esecuzione localmente
Quando esegui il test in locale su Cloud Run, puoi confermare nel codice che il container
viene eseguito localmente controllando la variabile di ambiente K_REVISION
, che
Cloud Run rende disponibile per tutti i container.
Docker
Per confermare che esegui il codice in locale su Google Cloud CLI puoi:
eseguire una query sulla variabile di ambiente K_REVISION
ma poiché non è stata
impostato, 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
esegui il codice localmente su Google Cloud CLI, puoi eseguire query
K_REVISION
e cerca il valore dev-00001
da
per confermare che sia eseguito localmente.
emulatore Cloud Code
Per verificare di eseguire il codice in locale su Cloud Code, puoi:
esegui una query sulla variabile di ambiente K_REVISION
e cerca il valore local
per verificare che sia eseguito localmente.
Interfaccia a riga di comando gcloud
Per confermare che esegui il codice in locale su Google Cloud CLI puoi:
esegui una query sulla variabile di ambiente K_REVISION
e cerca un valore che inizia
con dev-
per confermare che sia in esecuzione in locale.
Passaggi successivi
- Per scoprire come risolvere i problemi di un'applicazione Cloud Run non funzionante in locale, consulta Risoluzione dei problemi locali di Cloud Run di Google Cloud.
- Per scoprire come eseguire il deployment dei container che hai creato, consulta Deployment dei servizi.