Cómo realizar pruebas locales

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.

Ejecuta en un emulador de Knative serving

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 Knative serving.

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.

  1. Instala Cloud Code para VS Code o un IDE de JetBrains.
  2. Sigue las instrucciones para el desarrollo y la depuración locales dentro del IDE.

Realiza una ejecución de manera local mediante Docker

Para probar la imagen de contenedor de forma local mediante Docker, haz lo siguiente:

  1. 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 gcr.io/cloudrun/hello.

    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.

  2. 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.

Ejecuta de manera local mediante Docker con acceso a los servicios de 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:

  1. Consulta Comienza a usar la autenticación para obtener instrucciones sobre cómo generar, recuperar y configurar las credenciales de la cuenta de servicio.

  2. Las siguientes marcas de ejecución de Docker incorporan las credenciales y la configuración del sistema local en el contenedor local:

    1. Usa la marca --volume (-v) para incorporar el archivo de credenciales en el contenedor (se supone que ya configuraste la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en tu máquina):
      -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
    2. Usa la marca --environment (-e) para establecer la variable GOOGLE_APPLICATION_CREDENTIALS dentro del contenedor:
      -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
  3. 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:

    /tmp/keys/FILE_NAME.json
    es una ubicación razonable para colocar las credenciales dentro del contenedor.

    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.

Próximos pasos

Para aprender a implementar los contenedores compilados, consulta Implementa servicios.