Crea una app del entorno de ejecución personalizado en el entorno flexible de App Engine

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.

Los entornos de ejecución personalizados te permiten compilar apps que se ejecutan en un entorno definido por un Dockerfile. Si usas un Dockerfile, puedes usar lenguajes y paquetes que no formen parte de Google Cloud, a la vez que usas los recursos y herramientas del entorno flexible de App Engine.

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

Antes de comenzar

Antes de ejecutar la app de muestra en esta guía de inicio rápido, debes configurar tu entorno y crear un proyecto de Google Cloud para App Engine nuevo:

  1. Crea un proyecto de Google Cloud nuevo mediante la consola de Google Cloud:

    1. Abre la consola de Google Cloud:

      Ir a la página Proyectos

    2. Haz clic en Crear proyecto y, luego, asigna un nombre a tu proyecto de Google Cloud nuevo.

    3. Habilita la facturación en tu proyecto de Google Cloud nuevo. Para ello, crea una cuenta de facturación nueva o configura una existente:

      Ir a la página Facturación

  2. Descarga e instala Google Cloud CLI y, luego, inicializa la CLI de gcloud:

    Descarga el SDK

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

    gcloud app create
    

Ubicaciones de App Engine

App Engine es regional, lo que significa que la infraestructura que ejecuta tus apps se encuentra en una región específica, y Google la administra para que esté disponible de forma redundante en todas las zonas dentro de esa región.

El cumplimiento de tus requisitos de latencia, disponibilidad o durabilidad debe ser un factor principal para seleccionar la región en la que se ejecutan las apps. Por lo general, puedes seleccionar la región más cercana a la de los usuarios de la app, pero debes considerar las ubicaciones en las que App Engine está disponible y las ubicaciones de los otros productos y servicios de Google Cloud que usa la app. Usar servicios en varias ubicaciones puede afectar la latencia de la app y sus precios.

No puedes cambiar la región de una app una vez configurada.

Si ya creaste una aplicación de App Engine, puedes ver su región mediante una de las siguientes opciones:

Descarga la app de Hello World

  1. Elige una de las siguientes opciones para descargar la app de Hello World de muestra desde GitHub a tu máquina local:

    • Clona la app de Hello World de muestra desde el siguiente repositorio:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • Descarga la muestra como un archivo .zip y, luego, descomprímelo en un directorio local.

  2. Navega al directorio nginx en el que se encuentra el código de muestra, por ejemplo:

    cd appengine-custom-runtimes-samples/nginx
    

Ejecuta Hello World en la máquina local

Para probar la app de muestra, descarga e instala Docker y, luego, ejecuta el contenedor de Hello World en tu máquina local.

No hay pasos específicos de App Engine aquí, así que puedes probar la app de muestra con las herramientas y el enfoque que prefieras.

Implementa Hello World en App Engine

Cuando desees implementar la app de muestra en App Engine, sigue estos pasos:

  1. Desde el directorio en el que se encuentran app.yaml y Dockerfile, ejecuta el siguiente comando:

    gcloud app deploy
    

    Obtén más información sobre las marcas opcionales.

  2. A fin de ver que tu app se ejecute en https://PROJECT_ID.REGION_ID.r.appspot.com, ejecuta el siguiente comando para iniciar tu navegador:

    gcloud app browse
    

Marcas comunes del comando de gcloud

  • Incluye la marca --version para especificar un ID que identifique esa versión de la app de forma única. De lo contrario, se generará uno para que lo uses. Por ejemplo: --version [YOUR_VERSION_ID].
  • Incluye la marca --project para especificar un ID del proyecto de Google Cloud alternativo al que inicializaste como predeterminado en la herramienta de gcloud. Por ejemplo: --project [YOUR_PROJECT_ID].

Ejemplo:

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

Para obtener más información sobre la implementación de la app desde la línea de comandos, consulta Prueba e implementa la app. Para obtener una lista de todas las marcas de comandos, consulta la referencia de gcloud app deploy.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?

Obtén más información sobre Dockerfiles en la referencia de Dockerfile.

Si deseas obtener información para crear tu propio entorno de ejecución personalizado, consulta Compila entornos de ejecución personalizados.

Revisión de código

Hello World es la app de App Engine más simple que pueda existir, ya que crea un contenedor único que ejecuta solo un servicio y una versión. En esta sección, se describen cada uno de los archivos de la app en detalle.

app.yaml

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

runtime: custom
env: flex

La entrada runtime: custom le indica a App Engine que busque un Dockerfile que defina tu imagen del entorno de ejecución, y env: flex especifica que estás implementando en el entorno flexible.

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

Dockerfile

Define el conjunto de instrucciones que se usan a fin de crear la imagen de Docker para el contenedor de la app de muestra. El archivo Dockerfile debe estar en el mismo directorio que el archivo app.yaml. Este archivo Dockerfile instala el servidor web nginx y copia la 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 compila una imagen base mediante la imagen oficial de Docker para el servidor web nginx.

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

La app de Hello World de muestra también incluye un archivo nginx.conf, que contiene la información básica de configuración de nginx, además del archivo index.html, que actúa como página raíz para el servidor web nginx.