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 packpara 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
- Instale o Docker Community Edition (CE) na
estação de trabalho. O Docker é usado pela packcomo um builder de imagens OCI.
- Instale a CLI Pack.
- Instale a ferramenta de controle de origem Git para buscar a amostra de aplicativo 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.
- Clone o repositório de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git 
- Altere para o diretório que contém o exemplo de código do aplicativo:
    Gocd buildpack-samples/sample-go Javacd buildpack-samples/sample-java-gradle Node.jscd buildpack-samples/sample-node PHPcd buildpack-samples/sample-php Pythoncd buildpack-samples/sample-python Rubycd buildpack-samples/sample-ruby .NETcd buildpack-samples/sample-dotnet 
- Use packpara criar a imagem do aplicativo de amostra:Gopack build --builder=gcr.io/buildpacks/builder sample-go Javapack build --builder=gcr.io/buildpacks/builder sample-java-gradle Node.jspack build --builder=gcr.io/buildpacks/builder sample-node PHPpack build --builder=gcr.io/buildpacks/builder sample-php Pythonpack build --builder=gcr.io/buildpacks/builder sample-python Rubypack build --builder=gcr.io/buildpacks/builder sample-ruby .NETpack build --builder=gcr.io/buildpacks/builder sample-dotnet 
- Execute a imagem usando docker:Godocker run -p8080:8080 sample-go Javadocker run -it -ePORT=8080 -p8080:8080 sample-java-gradle Node.jsdocker run -it -ePORT=8080 -p8080:8080 sample-node PHPdocker run -it --rm -p 8080:8080 sample-php Pythondocker run -it -ePORT=8080 -p8080:8080 sample-python Rubydocker run -it -ePORT=8080 -p8080:8080 sample-ruby .NETdocker run -it -ePORT=8080 -p8080:8080 sample-dotnet 
- 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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      
        In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Build and Artifact Registry APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
      Install the Google Cloud CLI. 
- 
          Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada. 
- 
        Para inicializar a gcloud CLI, execute o seguinte comando: gcloud init
- 
    
    
      
        In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Build and Artifact Registry APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
      Install the Google Cloud CLI. 
- 
          Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada. 
- 
        Para inicializar a gcloud CLI, execute o seguinte comando: gcloud init
- 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: - Crie um novo repositório do Docker no mesmo local do seu projeto Google Cloud .
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION" - REPO_NAMEpelo nome que você escolheu para o repositório do Docker.
- REGIONpelo local dentro ou mais próximo do local do seu projeto do Google Cloud .
- DESCRIPTIONcom uma descrição da sua escolha.
 Por exemplo, para criar um repositório dockeremus-west2com a descrição "repositório do Docker", execute:gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository" 
- 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. 
 
- Crie um novo repositório do Docker no mesmo local do seu projeto Google Cloud .
- LOCATIONpelo nome da região do repositório de contêineres. Exemplo:- us-west2
- PROJECT_IDcom o ID do seu projeto Google Cloud .
- REPO_NAMEpelo nome do repositório do Docker.
- IMAGE_NAMEpelo nome da imagem do contêiner.
- Crie um nome de arquivo YAML cloudbuild.yamlque inclua o URI do repositório de imagens do contêiner.
- LOCATIONpelo nome da região do repositório de contêineres, por exemplo,- us-west2.
- PROJECT_IDcom o ID do seu projeto Google Cloud .
- REPO_NAMEpelo nome do repositório do Docker.
- IMAGE_NAMEpelo nome da imagem do contêiner.
- Crie o aplicativo. - Se você nomeou seu arquivo de configuração - cloudbuild.yaml, execute o seguinte comando:- gcloud builds submit .
- Clone o repositório de amostra na máquina local:
    git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git 
- Altere para o diretório que contém o exemplo de código do aplicativo:
    Gocd buildpack-samples/sample-go Javacd buildpack-samples/sample-java-gradle Node.jscd buildpack-samples/sample-node PHPcd buildpack-samples/sample-php Pythoncd buildpack-samples/sample-python Rubycd buildpack-samples/sample-ruby .NETcd buildpack-samples/sample-dotnet 
- Use gcloudpara enviar o código-fonte do aplicativo para o Cloud Build:Gogcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go Javagcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle Node.jsgcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node PHPgcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php Pythongcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python Rubygcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby .NETgcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet 
- 
    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: - LOCATIONpelo nome da região do repositório de contêineres. Exemplo:- us-west2
- PROJECT_IDcom o ID do seu projeto Google Cloud .
- REPO_NAMEpelo nome do repositório do Docker.
 
- Implantar a imagem no Cloud Run.
- Definir as variáveis de ambiente.
- Configurar imagens de build.
- Acelere builds com imagens em cache.
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:
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.
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 images: - LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
Substitua:
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.