Implemente serviços a partir do código-fonte

Esta página descreve como implementar um novo serviço ou uma revisão de serviço no Cloud Run diretamente a partir do código fonte através de um único comando da CLI gcloud, gcloud run deploy com a flag --source. Para um exemplo passo a passo da implementação de um serviço Hello World, consulte os inícios rápidos de implementação a partir da origem.

Nos bastidores, este comando usa os buildpacks do Google Cloud e o Cloud Build para criar automaticamente imagens de contentores a partir do seu código-fonte sem ter de instalar o Docker na sua máquina nem configurar buildpacks ou o Cloud Build. Ou seja, o comando único descrito acima faz o que, de outra forma, exigiria os comandos gcloud builds submit e gcloud run deploy. Por predefinição, o Cloud Run usa o tipo de máquina predefinido fornecido pelo Cloud Build.

Tenha em atenção que as implementações de origem usam o Artifact Registry para armazenar contentores criados. Se o seu projeto ainda não tiver um repositório do Artifact Registry com o nome cloud-run-source-deploy na região para a qual está a fazer a implementação, esta funcionalidade cria automaticamente um repositório do Artifact Registry com o nome cloud-run-source-deploy.

Se existir um Dockerfile no diretório do código-fonte, o código-fonte carregado é criado com esse Dockerfile. Se não existir nenhum Dockerfile no diretório de código-fonte, os buildpacks do Google Cloud detetam automaticamente a linguagem que está a usar e obtêm as dependências do código para criar uma imagem de contentor pronta para produção, usando uma imagem base segura gerida pela Google.

Por predefinição, as correções de segurança só são aplicadas quando o serviço do Cloud Run é implementado. Quando ativa as atualizações de segurança automáticas para um serviço, esse serviço recebe patches automaticamente sem tempo de inatividade. Saiba mais sobre como configurar atualizações de segurança.

Idiomas suportados

Além das origens com um Dockerfile, a implementação a partir da origem suporta os seguintes idiomas através dos buildpacks do Google Cloud:

Tempo de execução Implementação da origem Configuração do buildpack
Ir Implemente um serviço Go Configure os buildpacks do Go
Node.js Implemente um serviço Node.js Configure os buildpacks do Node.js
Python Implemente um serviço Python Configure os buildpacks do Python
Java
(inclui Kotlin, Groovy e Scala)
Implemente um serviço Java Configure os buildpacks Java
.NET Implemente um serviço .NET Configure os buildpacks .NET
Ruby Implemente um serviço Ruby Configure os buildpacks do Ruby
PHP Implemente um serviço PHP Configure os buildpacks PHP

Leia mais detalhes sobre as versões de idiomas suportadas.

Limitações desta funcionalidade

  • A implementação a partir da origem usa o Artifact Registry e o Cloud Build, pelo que esta funcionalidade só está disponível nas regiões suportadas pelo Artifact Registry e pelo Cloud Build.
  • A implementação a partir da origem é uma funcionalidade de conveniência e não permite a personalização total da compilação. Para ter mais controlo, crie a imagem de contentor com o Cloud Build, por exemplo, usando o gcloud builds submit e, de seguida, implemente a imagem de contentor usando, por exemplo, o gcloud run deploy --image.
  • A implementação a partir da origem com os buildpacks do Google Cloud define a data da última modificação dos ficheiros de origem como 1 de janeiro de 1980. Este é o comportamento predefinido dos buildpacks e foi concebido para suportar compilações reproduzíveis. Dependendo da sua estrutura de linguagem, isto pode afetar o armazenamento em cache no navegador de ficheiros estáticos. Se a sua aplicação for afetada por esta situação, a Google recomenda que desative os cabeçalhos HTTP etag e Last-Modified na sua aplicação.
  • A implementação a partir da origem com os buildpacks do Google Cloud usa sempre o gcr.io/buildpacks/builder:latest. Se a sua configuração de idioma ou SO preferida não estiver disponível no latest, use um criador específico para criar uma imagem da aplicação com o seu criador preferido.
  • Pode implementar o seu serviço a partir da origem usando Kotlin e outras linguagens JVM, como Java. A linguagem que usa tem de estar em conformidade com as seguintes regras:

    • Pode criar a aplicação com o Maven ou o Gradle.
    • O ficheiro de compilação contém todos os plug-ins necessários para as classes de produtos.

Antes de começar

  • Certifique-se de que configurou um novo projeto para o Cloud Run, conforme descrito na página de configuração.
  • Se estiver ao abrigo de uma política da organização de restrição de domínio que restringe as invocações não autenticadas para o seu projeto, tem de aceder ao serviço implementado conforme descrito em Testar serviços privados.

  • Ative a API Cloud Run Admin e a API Cloud Build:

    gcloud services enable run.googleapis.com \
        cloudbuild.googleapis.com

    Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.

Funções necessárias

O utilizador ou o administrador tem de conceder à conta de implementação e à conta de serviço do Cloud Build as seguintes funções do IAM.

Clique para ver as funções necessárias para a conta do implementador

Para receber as autorizações necessárias para criar e implementar a partir da origem, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

Clique para ver as funções necessárias para a conta de serviço do Cloud Build

O Cloud Build usa automaticamente a conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função Cloud Run Builder (roles/run.builder) à conta de serviço predefinida do Compute Engine no seu projeto:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Substitua PROJECT_NUMBER pelo seu Google Cloud número do projeto e PROJECT_ID pelo seu Google Cloud ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte o artigo Criar e gerir projetos.

A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.

Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

Implemente a partir da origem

Para implementar a partir do código-fonte:

  1. Altere para o diretório de origem. Tenha em atenção que o diretório de origem não requer um Dockerfile, mas, se existir um, é usado.

  2. Crie e implemente o seu serviço:

    gcloud run deploy SERVICE --source .
    Substitua SERVICE pelo nome que quer para o seu serviço.

    Opcionalmente, se o seu código-fonte usar um dos tempos de execução de idiomas suportados e quiser configurar atualizações automáticas de imagens base para o seu tempo de execução, especifique a flag --automatic-updates e a flag --base-image com a imagem base para o seu serviço, por exemplo, nodejs22.

  3. Responda a todas as instruções para instalar as APIs necessárias respondendo y quando lhe for pedido. Só tem de fazer isto uma vez por projeto. Responda a outros pedidos fornecendo a plataforma e a região, se não tiver definido predefinições para estas, conforme descrito na página de configuração.

  4. Aguarde pela conclusão da compilação e da implementação. Quando terminar, o Cloud Run apresenta uma mensagem de êxito.

Após a implementação, tenha em atenção que esta revisão do serviço publica 100% do tráfego.

Automatizar a compilação a partir da origem

Como prática recomendada para evitar alterações sem controlo de versões na origem local, a Google recomenda que faça a implementação automaticamente quando as alterações são enviadas para o seu repositório Git. Para facilitar este processo, pode ligar e configurar a implementação contínua ao seu serviço do Cloud Run. Ao associar os seus repositórios do GitHub ao Cloud Run, pode configurar compilações e implementar os seus repositórios sem escrever Dockerfiles nem ficheiros de compilação.

Para configurar compilações automatizadas, configure a automatização conforme descrito na página de compilações contínuas, certificando-se de que escolhe a opção para criar a origem com buildpacks.

O que se segue?

Depois de implementar um serviço do Cloud Run, pode fazer o seguinte:

Saiba mais sobre as configurações de implementação de origem:

Pode automatizar as compilações e as implementações dos seus serviços do Cloud Run usando acionadores do Cloud Build: