Criar um aplicativo de ambiente de execução personalizado no ambiente flexível do App Engine

ID da região

O REGION_ID é um código abreviado que o Google atribui com base na região que você selecionou ao criar o aplicativo. O código não corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes aos códigos de país e estado geralmente usados. Para aplicativos criados após fevereiro de 2020, o REGION_ID.r está incluído nos URLs do App Engine. Para apps existentes criados antes dessa data, o ID da região é opcional no URL.

Os ambientes de execução personalizados permitem criar aplicativos executados em um ambiente definido por Dockerfile. Ao usar um Dockerfile, é possível usar linguagens e pacotes que não fazem parte do Google Cloud e usar os mesmos recursos e ferramentas usados no ambiente flexível do App Engine.

Neste início rápido, um servidor da Web nginx é lançado no App Engine usando um ambiente de execução personalizado.

Antes de começar

Antes de executar o aplicativo de amostra neste guia de início rápido, você precisa configurar seu ambiente e criar um novo projeto do Cloud para o App Engine:

  1. Crie um novo projeto do Google Cloud usando o console do Google Cloud:

    1. Abra o Console do Google Cloud:

      Acessar Projetos

    2. Clique em Criar projeto e nomeie o novo projeto do Google Cloud.

    3. Ative o faturamento no novo projeto do Google Cloud criando uma nova conta de faturamento ou definindo uma já existente:

      Acessar "Faturamento"

  2. Faça o download e instale a Google Cloud CLI e, em seguida, inicialize a CLI gcloud:

    Fazer o download do SDK

  3. Execute o comando gcloud a seguir para criar um aplicativo do App Engine e especificar em qual região geográfica você quer que seu aplicativo seja executado:

    gcloud app create
    

Locais do App Engine

O App Engine é regional. Isso significa que a infraestrutura que executa os aplicativos está em uma determinada região que é gerenciada pelo Google para estar disponível de modo redundante em todas as zonas dessa região.

Atender aos requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região de execução dos aplicativos. Geralmente, é possível selecionar a região mais próxima dos usuários do aplicativo, mas considere os locais em que o App Engine está disponível, bem como os locais dos outros produtos e serviços do Google Cloud usados pelo aplicativo. O uso de serviços em vários locais pode afetar a latência e o preço do aplicativo.

Não é possível alterar a região de um aplicativo depois de defini-la.

Se você já criou um aplicativo do App Engine, será possível consultar a região dele com um dos seguintes procedimentos:

Download do app Hello World

  1. Escolha uma das seguintes opções para fazer o download do aplicativo de amostra Hello World do GitHub para a máquina local:

    • Clone o aplicativo de amostra Hello World do seguinte repositório:

      git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
      
    • Faça o download da amostra (em inglês) como um arquivo .zip e, em seguida, extraia-o para um diretório local.

  2. Navegue até o diretório nginx em que o código de amostra está localizado, por exemplo:

    cd appengine-custom-runtimes-samples/nginx
    

Como executar o Hello World na máquina local

Você pode testar o aplicativo de amostra fazendo o download e a instalação do Docker, e executando o contêiner do Hello World em sua máquina local.

Não há etapas específicas do Google App Engine, então você pode testar o aplicativo de amostra usando as ferramentas e a abordagem que preferir.

Como implantar o Hello World no App Engine

Quando você estiver pronto para implantar o aplicativo de amostra no App Engine, execute estas etapas:

  1. No diretório em que app.yaml e Dockerfile estão localizados, execute o seguinte comando:

    gcloud app deploy
    

    Saiba mais sobre sinalizações opcionais.

  2. Para ver seu 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 comuns do comando gcloud

  • Inclua a sinalização --version para especificar um ID exclusivo da versão do seu aplicativo. Quando a sinalização não é incluída, o ID é gerado automaticamente. Exemplo: --version [YOUR_VERSION_ID]
  • Inclua a sinalização --project para especificar um ID de projeto alternativo do Google Cloud para o que você inicializou como padrão na ferramenta gcloud. Exemplo: --project [YOUR_PROJECT_ID]

Exemplo:

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

Para aprender a implantar o app pela linha de comando, consulte Como testar e implantar o app. Para uma lista de todas as sinalizações de comando, consulte a referência do gcloud app deploy.

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

  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.

A seguir

Saiba mais sobre Dockerfiles na referência do Dockerfile.

Para informações sobre como criar seu próprio ambiente de execução personalizado, consulte esta página (em inglês).

Revisão de código

O Hello World é o aplicativo App Engine mais simples possível, já que cria um único contêiner que executa apenas um serviço e uma versão. Cada um dos arquivos do aplicativo é descrito em detalhes nesta seção.

app.yaml

Especifica a configuração do aplicativo. O arquivo app.yaml deve residir no mesmo diretório que o arquivo Dockerfile.

runtime: custom
env: flex

A entrada runtime: custom instrui o App Engine a procurar um Dockerfile que defina a imagem do ambiente de execução e env: flex especifique que você está implantando no ambiente flexível.

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

Dockerfile

Define o conjunto de instruções usado para criar a imagem do Docker para o contêiner do aplicativo de amostra. O arquivo Dockerfile deve residir no mesmo diretório que o arquivo app.yaml. Esse Dockerfile instala o servidor da 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 base usando a imagem do Docker oficial para o servidor da Web nginx.

Usando esse Dockerfile, sua imagem de contêiner conterá o nginx e todo o conteúdo no diretório www/ estará disponível para seu aplicativo.

O aplicativo de amostra Hello World também inclui um arquivo nginx.conf, que contém as informações básicas de configuração do nginx, além do arquivo index.html, que serve como página raiz do servidor da Web nginx.