Durante el desarrollo, puedes ejecutar y probar la imagen de contenedor de manera local, antes de la implementación. Puedes usar Cloud Code o Docker instalado de manera local para ejecutar y probar a nivel local, incluida la ejecución local con acceso a los servicios de Google Cloud.
Antes de comenzar
Si es la primera vez que intentas ejecutar de forma local, es posible que no tengas todos los permisos necesarios para acceder a la imagen desde el registro de contenedores compatible que usas.
Consulta la documentación del registro de contenedores compatible sobre cómo obtener acceso. Puedes configurar Docker para obtener acceso a Artifact Registry mediante el auxiliar de credenciales de gcloud CLI.
gcloud auth configure-docker LOCATION-docker.pkg.dev
Realiza pruebas locales
Puedes realizar pruebas locales mediante Docker, Docker con acceso a Google Cloud, el emulador de Cloud Code o Google Cloud CLI. Selecciona la pestaña adecuada para obtener instrucciones.
Docker
Para probar la imagen de contenedor de forma local mediante Docker, haz lo siguiente:
Usa el comando de Docker:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
Reemplaza IMAGE_URL por una referencia a la imagen de contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.La variable de entorno
PORT
especifica el puerto que usará la aplicación para escuchar solicitudes HTTP o HTTPS. Este es un requisito del contrato del entorno de ejecución del contenedor. En este ejemplo, usamos el puerto 8080.Abre http://localhost:9090 en el navegador.
Si es la primera vez que trabajas con contenedores, te recomendamos revisar la guía Comienza a usar Docker. Para obtener más información sobre los comandos de Docker, consulta la documentación de Docker.
Docker con acceso a Google Cloud
Si usas bibliotecas cliente de Google Cloud para integrar tus aplicaciones en los servicios de Google Cloud y aún no has protegido esos servicios a fin de controlar el acceso externo, puedes configurar tu contenedor local para que se autentique con los servicios de Google Cloud mediante las credenciales predeterminadas de la aplicación.
Para ejecutar de forma local, sigue estos pasos:
Consulta Comienza a usar la autenticación para obtener instrucciones sobre cómo generar, recuperar y configurar las credenciales de la cuenta de servicio.
Las siguientes marcas de ejecución de Docker incorporan las credenciales y la configuración del sistema local en el contenedor local:
- Usa la marca
--volume
(-v
) para incorporar el archivo de credenciales en el contenedor (se supone que ya configuraste la variable de entornoGOOGLE_APPLICATION_CREDENTIALS
en tu máquina):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- Usa la marca
--environment
(-e
) para establecer la variableGOOGLE_APPLICATION_CREDENTIALS
dentro del contenedor:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- Usa la marca
De manera opcional, usa este comando
run
de Docker completamente configurado: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
Ten en cuenta la ruta que se encuentra a continuación:
es una ubicación razonable para colocar las credenciales dentro del contenedor./tmp/keys/FILE_NAME.json
Sin embargo, otras ubicaciones del directorio también funcionarán. El requisito fundamental es que la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
debe coincidir con la ubicación de activación de vinculación dentro del contenedor.Además, ten en cuenta que, con algunos servicios de Google Cloud, puedes usar una configuración alternativa para aislar la solución de problemas locales de los datos y el rendimiento de producción.
Emulador de Cloud Code
El complemento de Cloud Code para VS Code y los IDE de JetBrains te permite ejecutar y depurar de forma local la imagen de contenedor en un emulador de Cloud Run en tu IDE. El emulador te permite configurar un entorno que represente el servicio que se ejecuta en Cloud Run.
Puedes configurar propiedades como la CPU y la asignación de memoria, especificar variables de entorno y establecer conexiones de base de datos de Cloud SQL.
- Instala Cloud Code para VS Code o un IDE de JetBrains.
- Sigue las instrucciones para el desarrollo y la depuración locales dentro del IDE.
- VS Code: Desarrollo y depuración locales
- IntelliJ: Desarrollo y depuración locales
gcloud CLI
Google Cloud CLI contiene un entorno de desarrollo local para emular Cloud Run que puede compilar un contenedor desde la fuente, ejecutar el contenedor en tu máquina local y volver a compilar el contenedor automáticamente luego de los cambios del código fuente.
Para iniciar el entorno de desarrollo local, sigue estos pasos:
Cambia al directorio que contiene el código fuente de tu servicio.
Invoca este comando:
gcloud beta code dev
Si hay un Dockerfile en el directorio local, se usará para compilar el contenedor. Si no hay un Dockerfile, el contenedor se compila con los paquetes de compilación de Google Cloud.
Para ver el servicio en ejecución, visita http://localhost:8080/ en el navegador.
Si especificaste un puerto personalizado con la opción --local-port
, recuerda abrir tu navegador en ese puerto.
Para detener el servidor local, haz lo siguiente:
- Mac OS y Linux: Control+C
- Windows: Control-Break
Personaliza la configuración del servicio
Puedes personalizar la configuración de Cloud Run del servicio que se ejecuta de forma local mediante un archivo YAML. El formato YAML es el mismo que se puede usar para implementar un servicio de Cloud Run, pero solo admite un subconjunto de la configuración del servicio de Cloud Run. gcloud beta
code dev
busca y usa cualquier archivo que termine en *.service.dev.yaml
en el directorio actual. Si no se encuentra ninguno, usará cualquier archivo que termine en *.service.yaml
.
Puedes definir la siguiente configuración para el desarrollo local:
- Variables de entorno
- Límites de memoria del contenedor
- Límites de CPU del contenedor
- Nombre del servicio
- Cuentas de servicio
El campo image
del contenedor no es necesario para el desarrollo local, ya que la imagen se compila y se proporciona al servicio cuando se ejecuta el comando.
Puedes usar el siguiente archivo service.dev.yaml
de ejemplo para el desarrollo local:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
Prueba usar credenciales
Si deseas otorgar permiso al contenedor para usar los servicios de Google Cloud, debes darle una credencial de acceso al contenedor.
Para otorgar al contenedor acceso a una credencial con tu propia cuenta, accede con gcloud y usa la marca
--application-default-credential
:gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
Para otorgar a la aplicación cedenciales como una cuenta de servicio, usa la marca
--service-account
:gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
La marca
--service-account
hace que una clave de cuenta de servicio se descargue y se almacene en caché de forma local. El usuario es responsable de mantener la clave segura y borrarla cuando ya no sea necesaria.
Confirma que tu código se ejecute de forma local
Cuando hagas pruebas locales en Cloud Run, puedes confirmar en tu código que el contenedor se ejecuta de forma local si verificas la variable de entorno K_REVISION
, que Cloud Run pone a disposición de todos los contenedores.
Docker
Para confirmar que ejecutas tu código de forma local en Google Cloud CLI, puedes intentar consultar la variable de entorno K_REVISION
, pero como no se configuró, no habrá ningún valor presente.
Docker con acceso a Google Cloud
Si usaste los valores exactos de la sección anterior en el paso 3 para confirmar que ejecutas tu código de forma local en Google Cloud CLI, puedes consultar la variable de entorno K_REVISION
y buscar el valor dev-00001
para confirmar que se ejecuta de manera local.
Emulador de Cloud Code
Para confirmar que ejecutas el código de forma local en Cloud Code, puedes consultar la variable de entorno K_REVISION
y buscar un valor de local
a fin de confirmar que se ejecuta de forma local.
gcloud CLI
Para confirmar que ejecutas el código de forma local en Google Cloud CLI, puedes consultar la variable de entorno K_REVISION
y buscar un valor que comience con dev-
para confirmar que se ejecuta de forma local.
¿Qué sigue?
- Si deseas obtener información para solucionar de forma local los problemas de una aplicación de Cloud Run que no funciona, consulta el instructivo Solución de problemas local de un servicio de Cloud Run.
- Para aprender a implementar los contenedores compilados, consulta Implementa servicios.