Criar um aplicativo com buildpacks

Este guia mostra como usar buildpacks com o código-fonte do seu aplicativo para criar uma imagem de contêiner. Por exemplo, use buildpacks para criar o código-fonte do serviço do Cloud Run em uma imagem de contêiner.

Há dois métodos para criar imagens de contêiner com buildpacks:

  • Crie localmente com a CLI do pack para testar localmente seu aplicativo e prototipar com rapidez as alterações antes da implantação.
  • Crie remotamente com o Cloud Build. A criação com o Cloud Build é útil para aplicativos grandes que têm processos de build com uso intensivo de recursos e também pode ajudar a proteger sua cadeia de suprimentos de software.

Builds locais

Use a CLI do pack para criar seu aplicativo localmente em uma imagem de contêiner.

Antes de começar

  1. Instale o Docker Community Edition (CE) na estação de trabalho. O Docker é usado pela pack como um builder de imagens OCI.
  2. Instale a CLI Pack.
  3. Instale a ferramenta de controle de origem Git para buscar o aplicativo de amostra do GitHub.

Criar um aplicativo localmente

Use o comando pack build e especifique o builder padrão --builder=gcr.io/buildpacks/builder para criar as imagens de contêiner localmente.

pack build --builder=gcr.io/buildpacks/builder IMAGE_NAME

Substitua IMAGE_NAME pelo nome a imagem de contêiner do seu serviço.

Também é possível personalizar a imagem de contêiner estendendo as imagens de build e execução.

Criar um aplicativo de amostra localmente

Os exemplos a seguir demonstram como criar uma amostra localmente.

  1. Clone o repositório de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
  2. Altere para o diretório que contém o exemplo de código do aplicativo:

    Go

    cd buildpack-samples/sample-go

    Java

    cd buildpack-samples/sample-java-gradle

    Node.js

    cd buildpack-samples/sample-node

    PHP

    cd buildpack-samples/sample-php

    Python

    cd buildpack-samples/sample-python

    Ruby

    cd buildpack-samples/sample-ruby

    .NET

    cd buildpack-samples/sample-dotnet
  3. Use pack para criar a imagem do aplicativo de amostra:

    Go

    pack build --builder=gcr.io/buildpacks/builder sample-go

    Java

    pack build --builder=gcr.io/buildpacks/builder sample-java-gradle

    Node.js

    pack build --builder=gcr.io/buildpacks/builder sample-node

    PHP

    pack build --builder=gcr.io/buildpacks/builder sample-php

    Python

    pack build --builder=gcr.io/buildpacks/builder sample-python

    Ruby

    pack build --builder=gcr.io/buildpacks/builder sample-ruby

    .NET

    pack build --builder=gcr.io/buildpacks/builder sample-dotnet
  4. Execute a imagem usando docker:

    Go

    docker run -p8080:8080 sample-go

    Java

    docker run -it -ePORT=8080 -p8080:8080 sample-java-gradle

    Node.js

    docker run -it -ePORT=8080 -p8080:8080 sample-node

    PHP

    docker run -it --rm -p 8080:8080 sample-php

    Python

    docker run -it -ePORT=8080 -p8080:8080 sample-python

    Ruby

    docker run -it -ePORT=8080 -p8080:8080 sample-ruby

    .NET

    docker run -it -ePORT=8080 -p8080:8080 sample-dotnet
  5. Acesse o aplicativo em execução pelo localhost:8080.

Builds remotos

Use o Cloud Build para criar o aplicativo em uma imagem de contêiner e o Artifact Registry como repositório de contêineres para armazenamento e implantação de cada imagem.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Cloud Build and Artifact Registry.

    Ative as APIs

  5. Instale a CLI do Google Cloud.
  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Ative as APIs Cloud Build and Artifact Registry.

    Ative as APIs

  10. Instale a CLI do Google Cloud.
  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Verifique se o projeto do Google Cloud tem acesso a um repositório de imagens de contêiner.

    Para configurar o acesso a um repositório do Docker no Artifact Registry:

    1. Crie um novo repositório do Docker no mesmo local do seu projeto do Google Cloud.
      gcloud artifacts repositories create REPO_NAME \
      --repository-format=docker \
      --location=REGION --description="DESCRIPTION"
      
      Substitua:
      • REPO_NAME pelo nome que você escolheu para o repositório do Docker.
      • REGION pelo local dentro ou mais próximo do local do seu projeto do Google Cloud.
      • DESCRIPTION com uma descrição da sua escolha.

      Por exemplo, para criar um repositório docker em us-west2 com a descrição "repositório do Docker", execute:

      gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \
      --location=us-west2 --description="Docker repository"
      
    2. Verifique se o repositório foi criado:
      gcloud artifacts repositories list
      

      Na lista, você verá o nome que escolheu para o repositório do Docker.

Criar um aplicativo remotamente

Use o comando gcloud builds submit para criar e fazer upload da imagem do contêiner para o repositório.

Especifique a imagem do contêiner no próprio comando ou use um arquivo de configuração.

Criar com o comando

Para criar sem um arquivo de configuração, especifique a flag image:

gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME

Substitua:

  • LOCATION pelo nome da região do repositório de contêineres. Exemplo: us-west2
  • PROJECT_ID pelo ID do seu projeto do Google Cloud.
  • REPO_NAME pelo nome do repositório do Docker.
  • IMAGE_NAME pelo nome da imagem do contêiner.

Exemplo:

gcloud builds submit --pack image=us-west2-docker.pkg.dev/my-project-id/my-buildpacks-docker-repo/app-image

Criar com arquivos de configuração

Use um arquivo de configuração para definir os detalhes de configuração do repositório de imagens como simplesmente o comando de build. O arquivo de configuração usa o formato YAML e precisa incluir uma etapa de build que usa a CLI pack.

  1. Crie um nome de arquivo YAML cloudbuild.yaml que inclua o URI do repositório de imagens do contêiner.

    options:
      logging: CLOUD_LOGGING_ONLY
      pool: {}
    projectId: PROJECT_ID
    steps:
    - name: gcr.io/k8s-skaffold/pack
      entrypoint: pack
      args:
      - build
      - LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
      - --builder
      - gcr.io/buildpacks/builder:latest
      - --network
      - cloudbuild
    

    Substitua:

    • LOCATION pelo nome da região do repositório de contêineres. Exemplo:us-west2
    • PROJECT_ID pelo ID do seu projeto do Google Cloud.
    • REPO_NAME pelo nome do repositório do Docker.
    • IMAGE_NAME pelo nome da imagem do contêiner.
  2. Crie o aplicativo.

    Se você nomeou seu arquivo de configuração cloudbuild.yaml, execute o seguinte comando:

    gcloud builds submit .
    

Exemplo: criar um aplicativo de amostra remotamente

Os exemplos a seguir demonstram como criar uma amostra remotamente e, em seguida, verificar se a imagem de contêiner foi enviada para o repositório no Artifact Registry.

  1. Clone o repositório de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
  2. Altere para o diretório que contém o exemplo de código do aplicativo:

    Go

    cd buildpack-samples/sample-go

    Java

    cd buildpack-samples/sample-java-gradle

    Node.js

    cd buildpack-samples/sample-node

    PHP

    cd buildpack-samples/sample-php

    Python

    cd buildpack-samples/sample-python

    Ruby

    cd buildpack-samples/sample-ruby

    .NET

    cd buildpack-samples/sample-dotnet
  3. Use gcloud para enviar o código-fonte do aplicativo para o Cloud Build:

    Go

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go

    Java

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle

    Node.js

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node

    PHP

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php

    Python

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python

    Ruby

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby

    .NET

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet
  4. Verifique se o aplicativo de amostra foi publicado em REPO_NAME:
    gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME

    Substitua:

    • LOCATION pelo nome da região do repositório de contêineres. Exemplo: us-west2
    • PROJECT_ID pelo ID do seu projeto do Google Cloud.
    • REPO_NAME pelo nome do repositório do Docker.

Próximas etapas