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.
- Implementar a partir da origem com compilação (predefinição):
esta opção usa os
buildpacks do Google Cloud
e o Cloud Build para compilar 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. Por predefinição, o Cloud Run usa o tipo de máquina predefinido fornecido pelo Cloud Build.
A execução de
gcloud run deploy --sourcetambém elimina a necessidade de executar o comandogcloud builds submit. - Implementar a partir da origem sem compilação (pré-visualização): esta opção implementa artefactos diretamente no Cloud Run, ignorando o passo do Cloud Build. Isto permite tempos de implementação rápidos.
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 a configuração das atualizações de segurança.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 invocações não autenticadas para o seu projeto, tem de aceder ao serviço implementado conforme descrito em Testar serviços privados.
-
Enable the Cloud Run Admin API.
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.Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.
Funções necessárias
Para implementar a partir da origem, o utilizador ou o administrador tem de conceder à conta de implementação as seguintes funções de 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:
- Programador de origem do Cloud Run (
roles/run.sourceDeveloper) no seu projeto - Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer) no seu projeto - Utilizador da conta de serviço (
roles/iam.serviceAccountUser) na identidade do serviço do Cloud Run
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.
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 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 buildpacks .NET |
| Ruby | Implemente um serviço Ruby | Configure os buildpacks do Ruby |
| PHP | Implemente um serviço PHP | Configure os buildpacks do PHP |
Leia mais detalhes sobre as versões de idiomas suportadas.
Implemente a partir da origem com compilação
Esta secção descreve como usar 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 no seu computador nem configurar buildpacks ou o Cloud Build.
Limitações
- 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 submite, em seguida, implemente a imagem de contentor usando, por exemplo, ogcloud 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 framework de idiomas, 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
etageLast-Modifiedna 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 o seu idioma preferencial ou configuração do SO não estiver disponível nolatest, use um criador específico para criar uma imagem da aplicação com o seu criador preferencial. 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 através do Maven ou do Gradle.
- O ficheiro de compilação contém todos os plug-ins necessários para as classes de produtos.
Antes de implementar com a compilação
Antes de implementar a partir da origem com a compilação:
Siga os passos em Antes de começar.
-
Enable the Cloud Build API.
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.
Funções necessárias
Para implementar a partir da origem com a compilação, o utilizador ou o administrador tem de conceder à conta de serviço do Cloud Build 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 com a compilação
Para implementar a partir do código fonte, clique no separador com instruções sobre como usar a ferramenta da sua escolha.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Altere para o diretório de origem. O diretório de origem usa um Dockerfile, se estiver presente, embora não seja obrigatório.
Crie e implemente o seu serviço:
gcloud run deploy SERVICE --source .
Substitua
SERVICEpelo nome que quer para o seu serviço.Responda a todas as instruções para instalar as APIs necessárias respondendo
yquando 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.Aguarde pela conclusão da compilação e da implementação. Quando terminar, o Cloud Run apresenta uma mensagem de êxito.
Instale a versão mais recente da CLI Gemini num dos seguintes ambientes de desenvolvimento:
- Terminal
- Cloud Shell
- VS Code com o modo de agente do Gemini Code Assist (consulte o separador "VS Code")
Instale a extensão do Cloud Run:
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Inicie sessão na CLI Google Cloud:
gcloud auth login
Configure as Credenciais padrão da aplicação:
gcloud auth application-default login
Altere para o diretório de código-fonte.
Inicie a Gemini CLI:
gemini
Crie e implemente o seu serviço:
/deploy
- Se lhe for pedido que indique o Google Cloud projeto, introduza o nome do projeto.
- Se lhe for pedido que selecione uma ferramenta, selecione
deploy_local_folder.
Aguarde pela conclusão da compilação e da implementação. Quando terminar, o Cloud Run apresenta uma mensagem de êxito.
Altere para o diretório de origem. O diretório de origem usa um Dockerfile, se estiver presente, embora não seja obrigatório.
No diretório do projeto, crie um ficheiro
compose.yamlcom as suas definições de serviço.services: web: build: . ports: - "8080:8080"
Também pode especificar mais opções de configuração, como variáveis de ambiente, segredos e montagens de volumes.
Para implementar os serviços, execute o comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlResponda
ya todas as instruções para instalar os componentes necessários ou ativar as APIs.Opcional: tornar o seu serviço público se quiser permitir o acesso não autenticado ao serviço.
Após a implementação, esta revisão do serviço publica 100% do tráfego.
Cloud Code
Para implementar a partir da origem com o Cloud Code, leia os guias do IntelliJ e do Visual Studio Code.
CLI do Gemini
Use o comando /deploy na ferramenta Gemini CLI para implementar um serviço do Cloud Run a partir do código fonte.
Para usar a Gemini CLI com a extensão do Cloud Run, siga estes passos:
MCP
Para implementar um serviço do Cloud Run a partir do código fonte de um cliente do protocolo Model Context Protocol (MCP), instale o servidor do protocolo Model Context Protocol (MCP) do Cloud Run.
As instruções de instalação variam consoante o cliente do MCP. Muitas vezes, exigem a adição das seguintes linhas ao ficheiro JSON de definições:
"mcpServers":{ "cloud-run": { "command": "npx", "args": ["-y", "@google-cloud/cloud-run-mcp"] } }
Compor
Pode armazenar a sua especificação de composição num ficheiro YAML e, em seguida, implementá-la a partir do código fonte como um serviço do Cloud Run através de um único comando gcloud.
Após a implementação, é apresentado o URL do serviço do Cloud Run. Copie este URL e cole-o no navegador para ver o contentor em execução. Pode desativar a autenticação predefinida na consola Google Cloud .
Implemente a partir da origem sem compilação
Pode implementar artefactos de origem diretamente no Cloud Run, ignorando o passo do Cloud Build. Em vez de criar uma imagem de contentor a partir da origem, pode carregar um arquivo pré-embalado da sua aplicação diretamente para um contentor do Cloud Storage. Em seguida, o Cloud Run usa este arquivo e executa-o diretamente numa imagem base. Esta abordagem resulta em tempos de implementação significativamente mais rápidos.
Limitações
A implementação na origem sem compilação só suporta o seguinte:
- Serviços do Cloud Run.
- Runtimes suportados (sem suporte de Dockerfile).
- Arquivo de origem (.tar.gz) <= 250 MiB.
- O ficheiro binário (por exemplo, go binary) ou o script (por exemplo, script python) tem de ser compatível com a arquitetura x86.
- A origem tem de ser autónoma, com todas as dependências incluídas no pacote. A imagem base de tempo de execução contém apenas o sistema operativo mínimo e algumas bibliotecas de idiomas.
Antes de implementar sem compilação
Para usar a funcionalidade "Implementar sem compilação":
- Certifique-se de que seguiu os passos descritos na secção Antes de começar.
Ative as APIs Cloud Run e Cloud Storage:
gcloud services enable run.googleapis.com \ storage.googleapis.com
Tem de instalar as dependências da aplicação localmente antes da implementação, uma vez que não são instaladas (sem compilação).
Implemente sem compilação
Esta secção descreve como implementar o seu artefacto diretamente no Cloud Run sem usar a compilação.
gcloud
Para implementar um diretório de origem local, use a flag --no-build para indicar ao comando deploy que ignore o passo do Cloud Build:
gcloud beta run deploy SERVICE_NAME \ --source APPLICATION_PATH \ --no-build \ --base-image=BASE_IMAGE \ --command=COMMAND \ --args=ARG
Substitua o seguinte:
SERVICE_NAME: o nome do seu serviço do Cloud Run.APPLICATION_PATH: a localização da sua aplicação no sistema de ficheiros local.BASE_IMAGE: a imagem base de tempo de execução que quer usar para a sua aplicação. Por exemplo,us-central1-docker.pkg.dev/serverless-runtimes/google-24-full/runtimes/nodejs24.COMMAND: o comando com o qual o contentor é iniciado.ARG: um argumento que envia para o comando do contentor. Se usar vários argumentos, especifique cada um na sua própria linha.
YAML
Pode armazenar a especificação do serviço num ficheiro YAML e, em seguida, implementá-lo
através da CLI gcloud ou do editor da Google Cloud consolaservice.yaml.
Crie um contentor de armazenamento para alojar a sua aplicação:
gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
Substitua o seguinte:
BUCKET_NAME: o nome que quer dar ao seu contentor, sujeito aos requisitos de nomenclatura. Por exemplo,my-bucket.BUCKET_LOCATION: a localização do seu contentor. Por exemplo,US.
Crie um arquivo com a origem da sua aplicação através de zip ou tar, por exemplo:
tar -cvzf ARCHIVE_NAME APPLICATION_PATH
Substitua o seguinte:
ARCHIVE_NAME: o nome do arquivo a criar. Por exemplo,app.tar.gz.APPLICATION_PATH: a localização da sua aplicação no sistema de ficheiros local. Por exemplo,~/my-application. Para arquivar o diretório de trabalho atual, defina este valor como*.
Carregue o arquivo da aplicação para o Cloud Storage:
gcloud storage cp ARCHIVE_NAME gs://BUCKET_NAME
Substitua o seguinte:
ARCHIVE_NAME: o caminho local para o arquivo que criou anteriormente. Por exemplo,app.tar.gz.BUCKET_NAME: o nome do contentor que criou anteriormente. Por exemplo,my-bucket.
Crie um novo ficheiro
service.yamlcom o seguinte conteúdo:apiVersion: serving.knative.dev/v2 kind: Service metadata: name: SERVICE_NAME spec: template: metadata: annotations: run.googleapis.com/sources: '{"": "gs://BUCKET_NAME/ARCHIVE_NAME"}' run.googleapis.com/base-images: '{"": "BASE_IMAGE"}' spec: containers: - image: scratch command: - COMMAND args: - ARG1 - ARG-N runtimeClassName: run.googleapis.com/linux-base-image-updateSubstitua o seguinte:
SERVICE_NAME: o nome do seu serviço do Cloud Run. Os nomes dos serviços têm de ter 49 carateres ou menos e têm de ser únicos por região e projeto.BUCKET_NAME: o nome do contentor que criou anteriormente. Por exemplo,my-bucket.ARCHIVE_NAME: o caminho local para o arquivo que criou anteriormente. Por exemplo,app.tar.gz.BASE_IMAGE: a imagem base de tempo de execução que quer usar para a sua aplicação. Por exemplo,us-central1-docker.pkg.dev/serverless-runtimes/google-24-full/runtimes/nodejs24.COMMAND: o comando com o qual o contentor deve ser iniciado.ARG1: o argumento que está a enviar para o comando do contentor. Se usar vários argumentos, especifique cada um na sua própria linha, por exemplo, conforme mostrado,ARG-N.
Implemente o novo serviço:
gcloud run services replace service.yaml
API REST
API REST:
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-X POST \
-d '{"template": {"containers": [{"command": ["npm"], "args": ["start"], "image": "scratch", "baseImageUri": "google-22/nodejs22", "sourceCode": {"cloudStorageSource": {"bucket": "'GCS_BUCKET_NAME", "object":"ARCHIVE"}}}]}}' \
https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services?serviceId=SERVICE_NAME
Exemplos de implementação a partir da origem sem compilação
Esta secção mostra exemplos de como implementar a partir da origem sem usar a compilação.
Node.js
Crie um serviço Node.js:
Crie um novo diretório com o nome
helloworlde altere o diretório para o mesmo:mkdir helloworld cd helloworld
Crie um ficheiro
package.jsoncom o seguinte conteúdo:No mesmo diretório, crie um ficheiro
index.jse copie as seguintes linhas para o mesmo:Este código cria um servidor Web básico que escuta na porta definida pela variável de ambiente
PORT.No diretório
helloworld, execute o seguinte comando para instalar as dependências do serviço localmente:npm install
No diretório
helloworld, implemente o serviço com a flag--no-build, que indica ao comandodeploypara ignorar o passo do Cloud Build:gcloud beta run deploy helloworld \ --source . \ --region=REGION \ --no-build \ --base-image=nodejs24 \ --command=node \ --args=index.js
Substitua o seguinte:
REGION: a região onde o seu serviço está implementado.
Python
Crie um serviço Python:
Crie um novo diretório com o nome
helloworlde altere o diretório para o mesmo:mkdir helloworld cd helloworldCrie um ficheiro denominado
main.pye cole o seguinte código no mesmo:Este código responde a pedidos com a nossa saudação "Hello World". O processamento de HTTP é feito por um servidor Web Gunicorn no contentor. Quando invocado diretamente para utilização local, este código cria um servidor Web básico que escuta na porta definida pela variável de ambiente
PORT.Crie um ficheiro denominado
requirements.txte cole o seguinte código no mesmo:Este código adiciona os pacotes necessários para o exemplo.
Forneça as dependências:
pip3 install -r requirements.txt --target=./vendor
Implemente o serviço através da CLI gcloud. A flag
--no-buildindica ao comandodeployque ignore o passo do Cloud Build:gcloud beta run deploy helloworld \ --source . \ --region=REGION \ --no-build \ --base-image=python313 \ --command=python \ --args=main.py \ --set-env-vars PYTHONPATH=./vendor
Substitua REGION pela região onde o seu serviço está implementado.
Resolução de problemas
Esta secção dá algumas sugestões sobre a resolução de problemas de implementação a partir da origem sem usar a compilação.
Desenvolvimento local
A implementação a partir da origem sem usar a compilação funciona de forma semelhante à montagem do código ou do ficheiro executável na imagem base.
Por exemplo:
Criar uma cópia de todo o conteúdo:
cp -R python/hello-world/ workspace
Execute a imagem base como utilizador root com a origem montada. Opcionalmente, pode incluir
-p 8080:8080se precisar de usar o curl a partir de um computador anfitrião.docker run -it -v "LOCAL_PATH" -u 0 us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/python313 /bin/bash`
Substitua LOCAL_PATH pela localização dos seus ficheiros de origem locais.
Execute o servidor:
python main.py
Registo de execução
O registo de execução é útil para depurar falhas de implementação. Na Google Cloud consola, aceda a Observabilidade > Registos.
Acesso ao Cloud Storage recusado
Se o seu serviço do Cloud Run estiver a receber erros "Acesso negado" ao tentar aceder a objetos do Cloud Storage, tem de conceder a função roles/storage.objectViewer à sua conta de serviço do Cloud Run:
gcloud projects add-iam-policy-binding PROJECT \ --member="SERVICE_ACCOUNT" \ --role="roles/storage.objectViewer"
Substitua o seguinte:
- PROJECT: o ID do seu Google Cloud projeto.
- SERVICE_ACCOUNT: a sua conta de serviço do Cloud Run.
Por exemplo,
service-123@serverless-robot-staging.iam.gserviceaccount.com.
Automatizar a compilação a partir da origem
Como prática recomendada para evitar alterações sem versão 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 no 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:
- Implementações graduais, reversão de revisões e migração de tráfego
- Veja registos de serviço
- Monitorize os desempenhos dos serviços
- Defina limites de memória
- Defina variáveis de ambiente
- Altere a simultaneidade do serviço
- Faça a gestão do serviço
- Faça a gestão das revisões de serviços
Saiba mais sobre as configurações de implementação de origem:
- Atualizações automáticas de imagens base
- Crie variáveis de ambiente
- Crie uma conta de serviço
- Crie conjuntos de trabalhadores
Pode automatizar as compilações e as implementações dos seus serviços do Cloud Run usando acionadores do Cloud Build: