Guía de inicio rápido para entornos de ejecución personalizados 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 seleccionas 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. Incluir REGION_ID.r en las URL de App Engine es opcional en el caso de las apps existentes, y pronto será obligatorio para todas las apps nuevas.

A fin de garantizar una transición sin problemas, estamos actualizando App Engine de forma paulatina para usar los ID de región. Si aún no actualizamos tu proyecto de Google Cloud, no verás un ID de región para la app. Dado que el ID es opcional en las apps existentes, no es necesario que actualices las URL ni realices otros cambios una vez que el ID de región esté disponible en las apps existentes.

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 Cloud para App Engine nuevo:

  1. Crea un proyecto de Cloud nuevo mediante Cloud Console:

    1. Abre Cloud Console:

      Ir a la página Proyectos

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

    3. Habilita la facturación en tu proyecto de 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 el SDK de Google Cloud y, luego, inicializa la herramienta 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 su precio.

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

Realiza una limpieza

A fin de evitar que se apliquen cargos, puedes borrar el proyecto de Cloud para detener la facturación de todos los recursos que se usan en ese proyecto.

  1. En Cloud Console, 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.

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

Más información

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.