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.

Realiza una ejecución en un emulador de Cloud Run for Anthos

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 for Anthos.

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/myproject/my-image:latest.

    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 la aplicación a los servicios de GCP y aún no protegiste esos servicios a fin de controlar el acceso externo, puedes configurar el contenedor local con el fin de autenticar 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 insertar el archivo de credenciales en el contenedor (suponiendo 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 que la ruta de acceso

    /tmp/keys/FILE_NAME.json
    En el ejemplo anterior, es una ubicación razonable para colocar sus 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.

¿Qué sigue?

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