No momento, o
Combine Cloud Run com Firebase Hosting para gerar e exibir seu conteúdo dinâmico ou criar APIs REST como microsserviços.
Com o Cloud Run, é possível: implantar um aplicativo empacotado em uma imagem de contêiner. Em seguida, usando Firebase Hosting, é possível direcionar solicitações HTTPS para acionar sua app conteinerizado.
- Cloud Run suporta vários idiomas (incluindo Go, Node.js, Python e Java), oferecendo a flexibilidade para usar a linguagem de programação e o framework de sua escolha.
- Cloud Run escalona automática e horizontalmente a imagem do contêiner para lidar com as solicitações recebidas e reduz o escalonamento quando e a demanda diminuir.
- Você paga apenas pela CPU, memória e rede consumidas durante o processamento da solicitação.
Por exemplo, casos de uso e amostras para Cloud Run integrados à Firebase Hosting, acesse nossa visão geral dos recursos sem servidor.
Confira neste guia como realizar os procedimentos a seguir:
- Criar um simples aplicativo Hello World.
- Conteinerizar um app e fazer upload dele para Container Registry.
- Implantar a imagem do contêiner no Cloud Run
- Direcionar solicitações Hosting para seu aplicativo conteinerizado.
Observe que, para melhorar o desempenho da exibição de conteúdo dinâmico, é possível, opcionalmente, ajustar suas configurações de cache.
Antes de começar
Antes de usar o Cloud Run, você precisa concluir algumas tarefas iniciais.
incluindo a configuração de uma conta no Cloud Billing, a ativação do Cloud Run
e instalando a ferramenta de linha de comando gcloud
.
Configure o faturamento do seu projeto
O Cloud Run oferece uma cota de uso sem custo financeiro, mas você ainda precisa ter uma conta Cloud Billing associada ao seu projeto do Firebase para usar ou testar o Cloud Run.
.Ative a API e instale o SDK
Ative a API Cloud Run no Console de APIs do Google:
Abra o Página da API Cloud Run no console de APIs do Google.
Quando solicitado, selecione seu projeto do Firebase.
Clique em Ativar na página da API Cloud Run.
Instale e inicialize o SDK Cloud.
Verifique se a ferramenta
gcloud
está configurada para o projeto correto:gcloud config list
Etapa 1: criar o aplicativo de exemplo
O Cloud Run oferece suporte a muitas outras linguagens, além das linguagens mostradas no exemplo a seguir.
Go
Crie um novo diretório chamado
helloworld-go
e acesse-o:mkdir helloworld-go
cd helloworld-go
Crie um novo arquivo chamado
helloworld.go
e adicione o seguinte código:Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para conteinerização e upload Container Registry:
Node.js
Crie um novo diretório chamado
helloworld-nodejs
e acesse-o:mkdir helloworld-nodejs
cd helloworld-nodejs
Crie um arquivo
package.json
com o seguinte conteúdo:Crie um novo arquivo chamado
index.js
e adicione o seguinte código:Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para conteinerização e upload Container Registry:
Python
Crie um novo diretório chamado
helloworld-python
e acesse-o:mkdir helloworld-python
cd helloworld-python
Crie um novo arquivo chamado
app.py
e adicione o seguinte código:Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para ser conteinerizado e enviado ao Container Registry.
Java
Instale o Java SE 8 ou um JDK posterior e o CURL.
Observe que só precisamos fazer isso para criar o novo projeto da Web 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 cURL e, em seguida, os comandos de descompactação:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Isso cria um projeto SpringBoot.
Atualize a classe
SpringBootApplication
emsrc/main/java/com/example/helloworld/HelloworldApplication.java
adicionando um@RestController
para lidar com o mapeamento/
e também adicione um campo@Value
para fornecer a variável de ambienteTARGET
:Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente
PORT
.
O app está concluído, pronto para ser conteinerizado e enviado ao Container Registry.
Etapa 2: conteinerizar um app e fazer upload dele para o Container Registry
Para conteinerizar o app de amostra, basta criar um novo arquivo chamado
Dockerfile
no mesmo diretório dos arquivos do código-fonte. Copie o conteúdo a seguir para seu arquivo.Go
Node.js
Python
Java
Crie a imagem do contêiner usando Cloud Build. Para isso, execute o seguinte: no diretório que contém seu Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Após a conclusão, você verá uma mensagem de SUCESSO contendo o nome da imagem
(gcr.io/PROJECT_ID/helloworld
).
A imagem do contêiner agora está armazenada em Container Registry e poderá ser reutilizada se quiser.
Observe que, em vez de Cloud Build, você pode usar uma versão instalada localmente do Docker para criar seu contêiner localmente.
Etapa 3: implantar a imagem do contêiner em Cloud Run
Implante usando o seguinte comando:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Quando solicitado:
- Selecione uma região (por exemplo,
us-central1
). - Confirme o nome do serviço (por exemplo,
helloworld
). - Responda
Y
para permitir invocações não autenticadas.
- Selecione uma região (por exemplo,
Para ter o melhor desempenho, coloque o serviço Cloud Run com Hosting usando as seguintes regiões:
us-west1
us-central1
us-east1
europe-west1
asia-east1
As regravações de Hosting feitas no Cloud Run são compatíveis com a seguintes regiões:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
Aguarde alguns instantes para que a implantação seja concluída. Em caso de sucesso, a linha de comando exibe o URL do serviço. Por exemplo:
https://helloworld-RANDOM_HASH-us-central1.a.run.app Consulte o contêiner implantado. Para isso, abra o URL do serviço em um navegador da Web.
A próxima etapa mostra como acessar esse aplicativo conteinerizado de uma URL Firebase Hosting para que ele possa gerar conteúdo dinâmico para sua site hospedado pelo Firebase.
Etapa 4: direcionar solicitações do Hosting para o aplicativo conteinerizado
Com as regras de substituição, é possível encaminhar solicitações que correspondam a padrões específicos para um único destino.
O exemplo a seguir mostra como direcionar todas as solicitações da página
/helloworld
no seu site do Hosting para acionar a inicialização e a execução de
sua instância de contêiner helloworld
.
Verifique se as seguintes condições foram atendidas:
Você tem a versão mais recente da CLI Firebase.
Você inicializou o Firebase Hosting.
Para instruções detalhadas sobre como instalar a CLI e inicializar o Hosting, consulte o Guia de início rápido do Hosting.
Adicione a seguinte configuração de
rewrite
na seçãohosting
:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
Implante a configuração do Hosting no site executando o seguinte comando na raiz do diretório do seu projeto:
firebase deploy --only hosting
Seu contêiner agora pode ser acessado por meio destes URLs:
Subdomínios do Firebase:
PROJECT_ID.web.app/
ePROJECT_ID.firebaseapp.com/
Qualquer domínio personalizado conectado:
CUSTOM_DOMAIN/
Acesse a página de configuração Hosting para mais detalhes sobre as regras de substituição. Você pode também aprender sobre os ordem de prioridade das respostas para várias configurações de Hosting.
Testar localmente
Durante o desenvolvimento, é possível executar e testar sua imagem de contêiner localmente. Para instruções detalhadas, acesse a documentação do Cloud Run.
Próximas etapas
Configure o armazenamento em cache do seu conteúdo dinâmico em uma CDN global.
Interaja com outros serviços do Firebase usando o SDK Admin do Firebase.
Saiba mais sobre Cloud Run, incluindo guias detalhados sobre como fazer a configuração, o gerenciamento e a configuração de contêineres.
Revise os preços e as cotas e limites de Cloud Run.