Crear una aplicación de tiempo de ejecución personalizado en el entorno flexible de App Engine

ID de región

El REGION_ID es un código abreviado que Google asigna en función de la región que selecciones al crear tu aplicación. El código no corresponde a un país o provincia, aunque algunos IDs de región pueden parecerse a los códigos de país y provincia que se usan habitualmente. En las aplicaciones creadas después de febrero del 2020, REGION_ID.r se incluye en las URLs de App Engine. En las aplicaciones creadas antes de esa fecha, el ID de región es opcional en la URL.

Los entornos de ejecución personalizados te permiten crear aplicaciones que se ejecutan en un entorno definido por un Dockerfile. Si usas un Dockerfile, puedes usar lenguajes y paquetes que no formen parte delGoogle Cloud y utilizar los mismos recursos y herramientas que se usan en el entorno flexible de App Engine.

En esta guía de inicio rápido, se inicia un servidor web nginx en App Engine mediante un tiempo de ejecución personalizado.

Antes de empezar

Antes de ejecutar la aplicación de muestra de esta guía de inicio rápido, debes configurar tu entorno y crear un proyecto de App Engine: Google Cloud

  1. Crea un Google Cloud proyecto con la Google Cloud consola:

    1. Abre la Google Cloud consola:

      Ir a Proyectos

    2. Haz clic en Crear proyecto y, a continuación, ponle un nombre al proyecto. Google Cloud

    3. Habilita la facturación en tu nuevo proyecto Google Cloud creando una cuenta de facturación o configurando una ya creada:

      Ir a Facturación

  2. Descarga e instala Google Cloud CLI y, a continuación, inicializa gcloud CLI:

    Descargar el SDK

  3. Ejecuta el siguiente comando gcloud para crear una aplicación de App Engine y especificar en qué región geográfica quieres que se ejecute:

    gcloud app create
    
  4. Debido a los cambios en el comportamiento predeterminado de cómo usa Cloud Build las cuentas de servicio en los proyectos nuevos y a los cambios en la política de organización de seguridad predeterminada, es posible que tengas que conceder roles adicionales a tu cuenta de servicio de implementación. Para obtener más información sobre cómo conceder roles específicos, consulta la guía de solución de problemas.

Ubicaciones de App Engine

App Engine es regional, lo que significa que la infraestructura que ejecuta tus aplicaciones está ubicada en una región concreta y Google la gestiona para que esté disponible de forma redundante en todas las zonas de esa región.

Cumplir con los requisitos de latencia, disponibilidad o durabilidad son factores principales para seleccionar la región donde se ejecutan tus aplicaciones. Por lo general, puedes seleccionar la región más cercana a los usuarios de tu aplicación, pero debes tener en cuenta las ubicaciones en las que está disponible App Engine, así como las ubicaciones de los demásGoogle Cloud productos y servicios que utilice tu aplicación. Usar servicios en varias ubicaciones puede afectar a la latencia de tu aplicación, así como a su precio.

No es posible cambiar la región de una aplicación después de configurarla.

Si ya has creado una aplicación de App Engine, puedes ver su región de una de las siguientes formas:

Descargar la aplicación Hello World

  1. Elige una de las siguientes opciones para descargar la aplicación de ejemplo Hello World de GitHub en tu máquina local:

    • Clona la aplicación de ejemplo Hello World del siguiente repositorio:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • Descarga el ejemplo como archivo .zip y, a continuación, extráelo a un directorio local.

  2. Ve al directorio nginx donde se encuentra el código de ejemplo. Por ejemplo:

    cd appengine-custom-runtimes-samples/nginx
    

Ejecutar Hello World en tu máquina local

Para probar la aplicación de ejemplo, descarga e instala Docker y, a continuación, ejecuta el contenedor Hello World en tu máquina local.

Aquí no hay pasos específicos de App Engine, por lo que puedes probar la aplicación de ejemplo con las herramientas y el método que prefieras.

Desplegar Hello World en App Engine

Cuando tengas todo listo para desplegar la aplicación de ejemplo en App Engine, sigue estos pasos:

  1. En el directorio donde se encuentran app.yaml y Dockerfile, ejecuta el siguiente comando:

    gcloud app deploy
    

    Más información sobre los indicadores opcionales

  2. Para ver tu aplicación en https://PROJECT_ID.REGION_ID.r.appspot.com, ejecuta el siguiente comando para iniciar tu navegador:

    gcloud app browse
    

Marcas de comandos gcloud habituales

  • Incluya la marca --version para especificar un ID que identifique de forma única esa versión de su aplicación. De lo contrario, se generará uno automáticamente. Ejemplo: --version [YOUR_VERSION_ID]
  • Incluye la marca --project para especificar un ID de proyecto alternativo Google Cloud al que has inicializado como predeterminado en la herramienta gcloud. Ejemplo: --project [YOUR_PROJECT_ID]

Ejemplo:

gcloud app deploy --version pre-prod-5 --project my-sample-app

Para obtener más información sobre el despliegue de tu aplicación desde la línea de comandos, consulta el apartado sobre cómo probar y desplegar tu aplicación. Para ver una lista de todas las marcas de comandos, consulta la gcloud app deploy referencia.

Limpieza

Para evitar que se apliquen cargos en tu cuenta de Google Cloud por los recursos utilizados en esta página, sigue estos pasos.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Siguientes pasos

Consulta más información sobre los Dockerfiles en la referencia de Dockerfile.

Para obtener información sobre cómo crear tu propio tiempo de ejecución personalizado, consulta Crear tiempos de ejecución personalizados.

Revisión de código

Hello World es la aplicación de App Engine más sencilla posible, ya que crea un solo contenedor que ejecuta un solo servicio y una sola versión. En esta sección se describe cada uno de los archivos de la aplicación en detalle.

app.yaml

Especifica la configuración de la aplicación. El archivo app.yaml debe estar en el mismo directorio que el archivo Dockerfile.

runtime: custom
env: flex

La entrada runtime: custom indica a App Engine que busque un Dockerfile que defina la imagen de tu tiempo de ejecución y env: flex especifica que vas a desplegar la aplicación en el entorno flexible.

Para obtener más información, consulta la referencia de app.yaml.

Dockerfile

Define el conjunto de instrucciones que se usan para crear la imagen de Docker del contenedor de la aplicación de ejemplo. El archivo Dockerfile debe estar en el mismo directorio que el archivo app.yaml. Este Dockerfile instala el servidor web nginx y copia una configuración básica:

# The standard nginx container just runs nginx. The configuration file added
# below will be used by nginx.
FROM nginx

# Copy the nginx configuration file. This sets up the behavior of nginx, most
# importantly, it ensure nginx listens on port 8080. Google App Engine expects
# the runtime to respond to HTTP requests at port 8080.
COPY nginx.conf /etc/nginx/nginx.conf

# create log dir configured in nginx.conf
RUN mkdir -p /var/log/app_engine

# Create a simple file to handle health checks. Health checking can be disabled
# in app.yaml, but is highly recommended. Google App Engine will send an HTTP
# request to /_ah/health and any 2xx or 404 response is considered healthy.
# Because 404 responses are considered healthy, this could actually be left
# out as nginx will return 404 if the file isn't found. However, it is better
# to be explicit.
RUN mkdir -p /usr/share/nginx/www/_ah && \
    echo "healthy" > /usr/share/nginx/www/_ah/health

# Finally, all static assets.
ADD www/ /usr/share/nginx/www/
RUN chmod -R a+r /usr/share/nginx/www

El comando FROM crea una imagen base con la imagen oficial de Docker del servidor web nginx.

Con este Dockerfile, tu imagen de contenedor incluirá nginx y todo el contenido del directorio www/ estará disponible para tu aplicación.

La aplicación de ejemplo Hello World también incluye un archivo nginx.conf que contiene la información básica de configuración de nginx, así como el archivo index.html que sirve como página raíz del servidor web nginx.