Crie uma app de tempo de execução personalizada no ambiente flexível do App Engine

ID da região

O REGION_ID é um código abreviado que a Google atribui com base na região que seleciona quando cria a sua app. O código não corresponde a um país ou uma província, embora alguns IDs de regiões possam parecer semelhantes aos códigos de países e províncias usados frequentemente. Para apps criadas após fevereiro de 2020, REGION_ID.r está incluído nos URLs do App Engine. Para apps existentes criadas antes desta data, o ID da região é opcional no URL.

Os tempos de execução personalizados permitem-lhe criar apps que são executadas num ambiente definido por um Dockerfile. Ao usar um Dockerfile, pode usar idiomas e pacotes que não fazem parte doGoogle Cloud e usar os mesmos recursos e ferramentas que são usados no ambiente flexível do App Engine.

Neste início rápido, é iniciado um servidor Web nginx no App Engine através de um tempo de execução personalizado.

Antes de começar

Antes de executar a app de exemplo neste início rápido, tem de configurar o seu ambiente e criar um novo Google Cloud projeto para o App Engine:

  1. Crie um novo Google Cloud projeto através da Google Cloud consola:

    1. Abra a Google Cloud consola:

      Aceder a Projetos

    2. Clique em Criar projeto e, de seguida, atribua um nome ao novo Google Cloud projeto.

    3. Ative a faturação no seu novo Google Cloud projeto criando uma nova conta de faturação ou definindo uma existente:

      Aceder a Faturação

  2. Transfira e instale a CLI Google Cloud e, de seguida, inicialize a CLI gcloud:

    Transfira o SDK

  3. Execute o seguinte comando gcloud para criar uma aplicação do App Engine e especificar em que região geográfica quer que a sua app seja executada:

    gcloud app create
    
  4. Devido a alterações no comportamento predefinido da forma como o Cloud Build usa as contas de serviço em novos projetos e alterações à política organizacional segura por predefinição, pode ter de conceder funções adicionais à sua conta de serviço de implementação. Para mais informações sobre a concessão de funções específicas, consulte o guia de resolução de problemas.

Localizações do App Engine

O App Engine é regional, o que significa que a infraestrutura que executa as suas apps está localizada numa região específica e é gerida pela Google para estar disponível de forma redundante em todas as zonas dessa região.

O cumprimento dos requisitos de latência, disponibilidade ou durabilidade são fatores principais para selecionar a região onde as suas apps são executadas. Geralmente, pode selecionar a região mais próxima dos utilizadores da sua app, mas deve considerar as localizações onde o App Engine está disponível, bem como as localizações dos outrosGoogle Cloud produtos e serviços que a sua app usa. A utilização de serviços em várias localizações pode afetar a latência da sua app, bem como os respetivos preços.

Não pode alterar a região de uma app depois de a definir.

Se já tiver criado uma aplicação do App Engine, pode ver a respetiva região através de uma das seguintes ações:

Transfira a app Hello World

  1. Escolha uma das seguintes opções para transferir a app de exemplo Hello World do GitHub para o seu computador local:

    • Clone a app de exemplo Hello World a partir do seguinte repositório:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • Transfira o exemplo como um ficheiro .zip e, em seguida, extraia-o para um diretório local.

  2. Navegue para o diretório nginx onde o exemplo de código está localizado, por exemplo:

    cd appengine-custom-runtimes-samples/nginx
    

Executar o Hello World na sua máquina local

Pode testar a app de exemplo transferindo e instalando o Docker e, em seguida, executando o contentor Hello World na sua máquina local.

Não existem passos específicos do App Engine aqui, pelo que pode testar a app de exemplo usando as ferramentas e a abordagem que preferir.

Implementar o Hello World no App Engine

Quando tiver tudo pronto para implementar a app de exemplo no App Engine, siga os passos seguintes:

  1. A partir do diretório onde se encontram os ficheiros app.yaml e Dockerfile, execute o seguinte comando:

    gcloud app deploy
    

    Saiba mais acerca das sinalizações opcionais.

  2. Para ver a sua app em execução em https://PROJECT_ID.REGION_ID.r.appspot.com, execute o seguinte comando para iniciar o navegador:

    gcloud app browse
    

Sinalizações de comandos gcloud comuns

  • Inclua a flag --version para especificar um ID que identifique exclusivamente essa versão da sua app. Caso contrário, é gerado um ID para si. Exemplo: --version [YOUR_VERSION_ID]
  • Inclua a flag --project para especificar um ID do projeto Google Cloud alternativo ao que inicializou como predefinição na ferramenta gcloud. Exemplo: --project [YOUR_PROJECT_ID]

Exemplo:

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

Para saber como implementar a sua app a partir da linha de comandos, consulte o artigo Testar e implementar a sua app . Para ver uma lista de todas as flags de comando, consulte a gcloud app deploy referência.

Limpar

Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

  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.

O que se segue?

Saiba mais sobre os Dockerfiles na referência do Dockerfile.

Para obter informações sobre como criar o seu próprio tempo de execução personalizado, consulte o artigo Criar tempos de execução personalizados.

Revisão de código

O Hello World é a app do App Engine mais simples possível, uma vez que cria um único contentor que executa apenas um serviço e uma versão. Esta secção descreve detalhadamente cada um dos ficheiros da app.

app.yaml

Especifica a configuração da app. O ficheiro app.yaml tem de estar no mesmo diretório que o ficheiro Dockerfile.

runtime: custom
env: flex

A entrada runtime: custom indica ao App Engine que procure um ficheiro Dockerfile que defina a imagem do seu tempo de execução e env: flex especifica que está a implementar no ambiente flexível.

Para mais informações, consulte a referência app.yaml.

Dockerfile

Define o conjunto de instruções que são usadas para criar a imagem do Docker para o contentor da app de exemplo. O ficheiro Dockerfile tem de estar no mesmo diretório que o ficheiro app.yaml. Este comando Dockerfile instala o servidor Web nginx e copia algumas configurações básicas:

# 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

O comando FROM cria uma imagem de base com a imagem do Docker oficial para o servidor Web nginx.

Ao usar este Dockerfile, a imagem do contentor vai conter o nginx e todo o conteúdo no diretório www/ está disponível para a sua aplicação.

A app de exemplo Hello World também inclui um ficheiro nginx.conf que contém as informações básicas de configuração do nginx, bem como o ficheiro index.html que serve como página raiz para o servidor Web nginx.