arrow_back

Como criar um aplicativo conteinerizado com buildpacks

Acesse mais de 700 laboratórios e cursos

Como criar um aplicativo conteinerizado com buildpacks

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Visão geral

Os buildpacks são outra abordagem para criar imagens de contêiner e oferecem uma alternativa para transformar seu código-fonte em uma imagem de contêiner. Os buildpacks são distribuídos e executados em imagens chamadas builders. Cada builder pode ter um ou mais buildpacks. Um builder transforma seu código-fonte em uma imagem de contêiner. Os buildpacks fazem o trabalho de criar e empacotar a imagem do contêiner que você pode implantar no Cloud Run ou executar com o Docker localmente.

Você pode criar seus próprios buildpacks ou usar os que são fornecidos por diversos fornecedores. Os buildpacks do Google Cloud permitem que os desenvolvedores criem e implantem aplicativos conteinerizados sem precisar instalar o Docker localmente ou criar um Dockerfile. Os buildpacks também são integrados ao Cloud Run para ativar um fluxo de trabalho de implantação com base na fonte.

Objetivos

Neste laboratório, você vai:

  • Criar um aplicativo com o pack, uma ferramenta de linha de comando usada com builders para criar imagens de contêiner do código-fonte.
  • Usar o builder de buildpacks do Google Cloud para criar uma imagem de contêiner.
  • Executar e testar o contêiner localmente com o Docker.
  • Criar e reimplantar o contêiner no Cloud Run.

Configuração

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
    Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
    Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.

  7. Aceite os termos e pule a página de recursos de recuperação.

Ative o Google Cloud Shell

O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.

O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. Clique em Continuar.

O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

ID do projeto em destaque no terminal do Cloud Shell

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  • Para listar o nome da conta ativa, use este comando:
gcloud auth list

Saída:

Credentialed accounts: - @.com (active)

Exemplo de saída:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Para listar o ID do projeto, use este comando:
gcloud config list project

Saída:

[core] project =

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: a documentação completa da gcloud está disponível no guia com informações gerais sobre a gcloud CLI .

Tarefa 1: configurar o ambiente e o projeto

Nesta tarefa, você vai definir variáveis de ambiente e configurar o ambiente do Cloud Shell.

Configurar o ambiente do Cloud Shell

  1. Para definir as variáveis de ambiente com o ID do projeto e a região, execute estes comandos no Cloud Shell:

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|us-central1}}}
  2. Defina a região de computação no Cloud Shell:

    gcloud config set compute/region $REGION

Ativar as APIs do Google

  • Para usar o Cloud Run e a API Google Translate neste laboratório, ative as APIs relevantes para seu projeto:

    gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

Clique em Verificar meu progresso para conferir o objetivo. APIs do Google ativadas

Tarefa 2: criar e executar um aplicativo com o Docker

Nesta tarefa, você vai criar um aplicativo de amostra com a ferramenta de linha de comando pack e o builder de buildpacks do Google Cloud.

Desenvolver o aplicativo

  1. Crie um diretório app e mude para ele:

    mkdir app && cd app
  2. Copie o exemplo de aplicativo python para este laboratório do Cloud Storage e extraia o conteúdo do arquivo:

    gcloud storage cp gs://cloud-training/CBL513/sample-apps/sample-py-app.zip . && unzip sample-py-app
  3. Confira os arquivos e o código-fonte do aplicativo de amostra:

    ls sample-py-app cat sample-py-app/main.py Como o buildpack do Python não gera um ponto de entrada de contêiner padrão para o aplicativo, usamos um Procfile para configurar o comando de inicialização do aplicativo.

    O aplicativo é escrito em Python e retorna uma mensagem de boas-vindas de amostra em resposta a uma solicitação feita ao aplicativo.

Criar o contêiner

  1. Mude para o diretório do aplicativo de amostra:

    cd sample-py-app
  2. Para criar o contêiner, execute pack:

    pack build --builder=gcr.io/buildpacks/builder sample-py-app

    Uma saída parcial é semelhante a:

    ... ... [exporter] Setting default process type 'web' [exporter] Saving sample-py-app... [exporter] *** Images (9f9f9a48fd46): [exporter] sample-py-app [exporter] Adding cache layer 'google.python.pip:pip' [exporter] Adding cache layer 'google.python.pip:pipcache' Successfully built image sample-py-app Observação: com o pack, você não precisou escrever e fornecer um Dockerfile para criar a imagem do contêiner.
  3. Para visualizar as imagens baixadas e criadas no host do Cloud Shell, execute:

    docker images REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/buildpacks/builder latest 514fb6f1bbfe 29 hours ago 804MB gcr.io/buildpacks/gcp/run v1 22db1b5e48e3 29 hours ago 177MB buildpacksio/lifecycle 0.16.0 67e021546a3f 43 years ago 30.5MB sample-py-app latest 9f9f9a48fd46 43 years ago 571MB
  4. Execute o contêiner localmente no Docker, transmitindo a variável de ambiente PORT para o aplicativo e vinculando a porta 8080 do host à porta do contêiner:

    docker run -it -e PORT=8080 -p 8080:8080 -d sample-py-app O código do aplicativo detecta a porta fornecida na variável de ambiente, nesse caso, a porta 8080.
  5. Teste o aplicativo conteinerizado com o comando curl:

    curl http://localhost:8080/

    Você verá esta resposta:

    Este é um app de amostra criado com buildpacks.

Tarefa 3: criar e executar um aplicativo no Cloud Run

Geralmente, como próxima etapa no ciclo de vida de desenvolvimento e implantação, você deve enviar a imagem de contêiner criada na tarefa anterior para o Artifact Registry e, em seguida, implantar a imagem em um ambiente baseado em contêineres, como o Google Kubernetes Engine ou o Cloud Run.

Nesta tarefa, você vai modificar o código do aplicativo de amostra e, em seguida, criar e implantar o aplicativo conteinerizado diretamente da origem com o Cloud Run.

Modificar o código do aplicativo

Você vai modificar o código do aplicativo de amostra para usar a API Google Translate, que traduz um trecho de texto do inglês para o espanhol.

  1. Edite o arquivo main.py com o editor de sua preferência, por exemplo, vi ou nano. Você também pode clicar em Abrir editor no menu do Cloud Shell para editar o arquivo.

  2. Substitua todo o conteúdo do arquivo main.py pelo código abaixo:

    from flask import Flask, request import google.auth from google.cloud import translate app = Flask(__name__) _, PROJECT_ID = google.auth.default() TRANSLATE = translate.TranslationServiceClient() PARENT = 'projects/{}'.format(PROJECT_ID) SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish') @app.route('/', methods=['GET', 'POST']) def index(): # reset all variables text = translated = None if request.method == 'POST': text = request.get_json().get('text').strip() if text: data = { 'contents': [text], 'parent': PARENT, 'target_language_code': TARGET[0], } # handle older call for backwards-compatibility try: rsp = TRANSLATE.translate_text(request=data) except TypeError: rsp = TRANSLATE.translate_text(**data) translated = rsp.translations[0].translated_text # create context context = { 'trtext': translated } return context if __name__ == "__main__": # Dev only: run "python main.py" and open http://localhost:8080 import os app.run(host="localhost", port=int(os.environ.get('PORT', 8080)), debug=True) O código do aplicativo usa a API Google Translate para traduzir um texto transmitido em uma solicitação JSON do inglês para o espanhol.

Criar e implantar o contêiner

  1. Para criar e implantar o contêiner no Cloud Run, execute o seguinte comando:

    gcloud run deploy sample-py-app --source . --region=${REGION} --allow-unauthenticated A opção allow-unauthenticated permite o acesso ao serviço sem precisar de autenticação.
  2. Quando solicitado, digite Y para aceitar o repositório padrão criado no Artifact Registry para armazenar a imagem do contêiner.

  3. Quando o comando for concluído, um serviço do Cloud Run chamado sample-py-app será criado.

    A resposta ao comando é semelhante a esta:

    Building using Buildpacks and deploying container to Cloud Run service [sample-py-app] in project [qwiklabs-gcp-00-0d56d42aca1a] region [asia-east1] OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/8bea2ded-4745-41f9-a82d-128e409daa20?project=34240880885]. OK Creating Revision... OK Routing traffic... OK Setting IAM Policy... Done. Service [sample-py-app] revision [sample-py-app-00001-nec] has been deployed and is serving 100 percent of traffic. Service URL: https://sample-py-app-ulvp7xw3bq-de.a.run.app

Testar o serviço do Cloud Run

  1. Defina uma variável de ambiente para o serviço do Cloud Run que foi criado na etapa anterior:

    SERVICE_URL=$(gcloud run services describe sample-py-app --region=${REGION} --format="value(status.url)"); echo $SERVICE_URL
  2. Para testar o serviço, execute o comando curl:

    curl $SERVICE_URL -H 'Content-Type: application/json' -d '{"text" : "Welcome to this sample app, built with Google Cloud buildpacks."}'

    O serviço responde com o texto traduzido:

    {"trtext":"Bienvenido a esta aplicaci\u00f3n de muestra, creada con paquetes de compilaci\u00f3n de Google Cloud."}

Clique em Verificar meu progresso para conferir o objetivo. Implantar um aplicativo no Cloud Run

Parabéns!

Neste laboratório, você criou um aplicativo com o comando pack e o builder de buildpacks do Google Cloud para criar uma imagem de contêiner para um aplicativo Python de amostra. Você executou e testou o contêiner localmente com o Docker antes de recriar e implantar o contêiner no Cloud Run.

Próximas etapas / Saiba mais

Para mais informações, consulte a documentação:

Saiba mais sobre os buildpacks do Google Cloud para diferentes plataformas de contêineres, como GKE, Anthos e Container-Optimized OS:

Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.