Nesta página, mostramos como criar um aplicativo Hello World simples, empacotá-lo em uma imagem de contêiner, carregar a imagem do contêiner no Container Registry e, em seguida, implantar a imagem do contêiner no Cloud Run. O exemplo é mostrado em várias linguagens, mas é possível usar outras além das mostradas.
Este guia de início rápido está disponível em um formato de tutorial interativo usando o Cloud Shell:
Também é possível seguir este guia de início rápido com uma conta de demonstração no Qwiklabs.
Antes de começar
- 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.
-
No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.
- Instale e inicialize o SDK do Cloud..
Como gravar o aplicativo de amostra
Para instruções sobre como criar um exemplo do aplicativo hello world que é executado no Cloud Run, clique na guia da sua linguagem:
Go
Crie um novo diretório com o nome
helloworld
e altere o diretório nele:mkdir helloworld cd helloworld
Inicialize um arquivo
go.mod
para declarar o módulo go:
Você pode criar o arquivo go.mod
diretamente no formato conforme mostrado acima ou inicializá-lo a partir do diretório do projeto com:
go mod init
Crie um novo arquivo chamado
main.go
e cole o código a seguir nele:Esse código cria um servidor da Web básico que realiza detecções na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Node.js
Crie um novo diretório com o nome
helloworld
e altere o diretório nele:mkdir helloworld cd helloworld
Crie um arquivo
package.json
com o seguinte conteúdo:No mesmo diretório, crie um arquivo
index.js
e copie as seguintes linhas nele:Esse código cria um servidor da Web básico que realiza detecções na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Python
Crie um novo diretório com o nome
helloworld
e altere o diretório nele:mkdir helloworld cd helloworld
Crie um arquivo chamado
main.py
e cole o seguinte código nele:Esse código responde às solicitações com a saudação "Hello World". A manipulação de HTTP é feita por um servidor da Web Gunicorn no contêiner. Quando invocado diretamente para uso local, este código cria um servidor da Web básico que atende na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Java
Crie um aplicativo Spring Boot.
No console, crie um novo projeto da Web vazio usando os comandos cURL e descompactar:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d javaVersion=1.8 \ -d bootVersion=2.3.3.RELEASE \ -d name=helloworld \ -d artifactId=helloworld \ -d baseDir=helloworld \ -o helloworld.zip unzip helloworld.zip cd helloworld
Isso cria um projeto Spring Boot.
Para usar o comando cURL acima no Microscoft Windows, você precisará de uma das linhas de comando a seguir ou terá que usar o Spring Initializr (configuração pré-carregada, link em inglês) para gerar o projeto:
- WSL (preferencial)
- cygwin (em inglês)
Atualize a classe
HelloworldApplication
emsrc/main/java/com/example/helloworld/HelloworldApplication.java
adicionando um@RestController
para processar o mapeamento/
e adicione também um campo@Value
para fornecer a variável de ambiente NAME:Configure a porta do servidor para ser definida pela variável de ambiente PORT em
application.properties
:
Esse código cria um servidor da Web básico que realiza detecções na porta definida pela variável de ambiente PORT
.
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Para implantar o Java no Cloud Run com outros frameworks, revise as amostras Knative para Spark e Vert.x.
C#
Instale o SDK do .NET Core 3.1. Observe que precisamos fazer isso para criar o novo projeto da Web apenas na próxima etapa: o Dockerfile, descrito posteriormente, carregará todas as dependências no contêiner.
No console, crie um novo projeto da Web vazio usando o comando dotnet:
dotnet new web -o helloworld-csharp
Altere o diretório para
helloworld-csharp
.Atualize a definição de
CreateHostBuilder
emProgram.cs
para detectar a porta definida pela variável de ambientePORT
:Esse código cria um servidor da Web básico que realiza detecções na porta definida pela variável de ambiente
PORT
.Crie um arquivo chamado
Startup.cs
e cole o seguinte código nele:Esse código responde às solicitações com a saudação "Hello World".
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
C++
Crie um novo diretório com o nome
helloworld-cpp
e altere o diretório para ele:mkdir helloworld-cpp cd helloworld-cpp
Crie um novo arquivo chamado
CMakeLists.txt
e cole o código a seguir nele:Crie um novo arquivo chamado
cloud_run_hello.cpp
e cole o código a seguir nele:Esse código cria um servidor da Web básico que realiza detecções na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
PHP
Crie um novo diretório com o nome
helloworld-php
e altere o diretório nele:mkdir helloworld-php cd helloworld-php
Crie um arquivo chamado
index.php
e cole o seguinte código nele:Esse código responde às solicitações com a saudação "Hello World". O processamento de HTTP é feito por um servidor da Web Apache no contêiner.
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Ruby
Crie um novo diretório com o nome
helloworld
e altere o diretório nele:mkdir helloworld cd helloworld
Crie um arquivo chamado
app.rb
e cole o seguinte código nele:Esse código cria um servidor da Web básico que realiza detecções na porta definida pela variável de ambiente
PORT
.Crie um nome de arquivo
Gemfile
e copie o seguinte nele:Se você não tiver o Bundler 2.0 ou superior instalado, instale o Bundler.
Gere um arquivo
Gemfile.lock
executando:bundle install
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Shell
Crie um novo diretório com o nome
helloworld-shell
e altere o diretório nele:mkdir helloworld-shell cd helloworld-shell
Crie um arquivo
script.sh
com o seguinte conteúdo:Para executar esse script de shell em todas as solicitações recebidas, esse exemplo usa um pequeno programa Go que inicia um servidor da Web básico e realiza detecções na porta definida pela variável de ambiente
PORT
.Crie um arquivo
invoke.go
com o seguinte conteúdo:
O app está concluído, pronto para ficar em contêiner e ser enviado ao Container Registry.
Outra
O Cloud Run é compatível com a maioria das linguagens. Para amostras simples em linguagens diferentes das que aparecem nesta tabela, consulte estes links:
No entanto, em todas essas amostras, ignore e omita o material sobre service.yaml
e o Docker Hub porque o Cloud Run não utiliza isso.
Como colocar um aplicativo em contêiner e enviá-lo ao Container Registry
Para contentorizar o aplicativo de amostra, crie um novo arquivo chamado Dockerfile
no mesmo diretório dos arquivos de origem e copie o seguinte conteúdo:
Go
Adicione um arquivo .dockerignore
para excluir arquivos da imagem do contêiner.
Node.js
Adicione um arquivo .dockerignore
para excluir arquivos da imagem do contêiner.
Python
O Dockerfile do Python inicia um servidor da Web do Gunicorn que detecta na porta definida pela variável de ambiente PORT
:
Adicione um arquivo .dockerignore
para excluir arquivos da imagem do contêiner.
Java
Adicione um arquivo .dockerignore
para excluir arquivos da imagem do contêiner.
C#
Para excluir arquivos produzidos por meio de operações de compilação dotnet
locais do upload para
o Cloud Build, adicione um arquivo .gcloudignore
ao mesmo diretório dos arquivos de origem do app de amostra:
Se essas linhas estiverem em um arquivo .gitignore
, pule esta etapa porque
.gitignore
é uma fonte padrão para a configuração .gcloudignore
.
Copie essas linhas para um arquivo .dockerignore
para builds de contêiner
locais com a CLI docker
.
C++
O Dockerfile C++ inicia o aplicativo ao detectar na porta definida pela
variável de ambiente PORT
:
PHP
O Dockerfile do PHP inicia um servidor da Web Apache que detecta na porta definida pela variável de ambiente PORT
:
Adicione um arquivo .dockerignore
para excluir arquivos da imagem do contêiner.
Ruby
Adicione um arquivo .dockerignore
para excluir arquivos da imagem do contêiner.
Shell
Outra
O Cloud Run é compatível com a maioria das linguagens. Para amostras do Dockerfiles em linguagens diferentes das que aparecem na tabela, consulte estes links:
No entanto, nessas amostras, ignore e omita o material sobre service.yaml
e o Docker Hub porque o Cloud Run não os usa.
Compile a imagem de contêiner usando o Cloud Build. Para isso, execute o comando a seguir no diretório que contém seu Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT-ID/helloworld
em que PROJECT-ID é o ID do projeto do GCP.
É possível consegui-lo executando gcloud config get-value project
.
Após a conclusão, você verá uma mensagem de "SUCESSO" contendo o nome da imagem (gcr.io/PROJECT-ID/helloworld
). A imagem é armazenada no Container Registry e pode ser reutilizada, se você quiser.
Como implantar no Cloud Run
Para implantar a imagem do contêiner, siga estas etapas:
Implante usando o comando a seguir:
gcloud run deploy --image gcr.io/PROJECT-ID/helloworld --platform managed
Se for solicitada a ativação da API, responda y para ativá-la.
Substitua PROJECT-ID pelo ID do projeto do GCP. Para ver o ID do projeto, execute o comando
gcloud config get-value project
.- O nome do serviço será solicitado: pressione Enter para aceitar o nome padrão,
helloworld
. - Você receberá uma solicitação de região: selecione a região de sua escolha, por exemplo,
us-central1
. - Você receberá uma solicitação para permitir chamadas não autenticadas: responda
y
.
Aguarde alguns instantes até a conclusão da implantação. Em caso de sucesso, a linha de comando exibe o URL de serviço.
- O nome do serviço será solicitado: pressione Enter para aceitar o nome padrão,
Consulte o contêiner implantado. Para isso, abra o URL de serviço em um navegador da Web.
Locais do Cloud Run
O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.
Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados.
Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere a localização dos outros produtos do Google Cloud usados pelo serviço do Cloud Run.
O uso de produtos do Google Cloud em vários locais pode afetar a latência e o custo do serviço.
O Cloud Run está disponível nas regiões a seguir:
Sujeitas aos preços do nível 1
asia-east1
(Taiwan)asia-northeast1
(Tóquio)asia-northeast2
(Osaka)europe-north1
(Finlândia)europe-west1
(Bélgica)europe-west4
(Países Baixos)us-central1
(Iowa)us-east1
(Carolina do Sul)us-east4
(Norte da Virgínia)us-west1
(Oregon)
Sujeitas aos preços do nível 2
asia-east2
(Hong Kong)asia-northeast3
(Seul, Coreia do Sul)asia-southeast1
(Singapura)asia-southeast2
(Jacarta)asia-south1
(Mumbai, Índia)australia-southeast1
(Sydney)europe-west2
(Londres, Reino Unido)europe-west3
(Frankfurt, Alemanha)europe-west6
(Zurique, Suíça)northamerica-northeast1
(Montreal)southamerica-east1
(São Paulo, Brasil)us-west2
(Los Angeles)us-west3
(Las Vegas)us-west4
(Salt Lake City)
Se você já criou um serviço do Cloud Run, poderá ver a região no painel do Cloud Run no Console do Cloud.
Parabéns! Você acabou de implantar um aplicativo empacotado em uma imagem de contêiner no Cloud Run. O Cloud Run escalona de maneira automática e horizontal a imagem de contêiner para processar as solicitações recebidas e reduz o escalonamento quando a demanda diminui. Você paga apenas pela CPU, memória e rede consumidas durante o processamento da solicitação.
Limpar
Como remover seu projeto de teste
Ainda que o Cloud Run não gere custos quando o serviço não estiver em uso, é possível receber cobranças pelo armazenamento da imagem do contêiner no Container Registry. É possível excluir sua imagem ou excluir seu projeto do Cloud para evitar cobranças. A exclusão do projeto do Cloud interrompe o faturamento de todos os recursos usados nesse projeto.
- No Console do Cloud, acesse a página Gerenciar recursos:
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
A seguir
Para mais informações sobre como compilar um contêiner da origem do código e enviar para o Container Registry, consulte estes tópicos: