Combine o Cloud Run com o Firebase Hosting para gerar e veicular seu conteúdo dinâmico ou criar APIs REST como microsserviços.
Usando o Cloud Run , você pode implantar um aplicativo empacotado em uma imagem de contêiner. Em seguida, usando o Firebase Hosting, você pode direcionar solicitações HTTPS para acionar seu aplicativo em contêiner.
- O Cloud Run oferece suporte a diversas linguagens (incluindo Go, Node.js, Python e Java), proporcionando flexibilidade para usar a linguagem de programação e a estrutura de sua preferência.
- O Cloud Run dimensiona automaticamente e horizontalmente a imagem do contêiner para lidar com as solicitações recebidas e depois reduz quando a demanda diminui.
- Você paga apenas pela CPU, memória e rede consumidas durante o tratamento da solicitação.
Para ver exemplos de casos de uso e exemplos do Cloud Run integrado ao Firebase Hosting, visite nossa visão geral sem servidor .
Este guia mostra como:
- Escreva um aplicativo simples Hello World
- Conteinerize um aplicativo e carregue-o no Container Registry
- Implantar a imagem do contêiner no Cloud Run
- Solicitações diretas de hospedagem para seu aplicativo em contêiner
Observe que, para melhorar o desempenho do fornecimento de conteúdo dinâmico, você pode opcionalmente ajustar as configurações de cache .
Antes de você começar
Antes de usar o Cloud Run, você precisa concluir algumas tarefas iniciais, incluindo a configuração de uma conta do Cloud Billing, a ativação da API Cloud Run e a instalação da ferramenta de linha de comando gcloud
.
Configure o faturamento para seu projeto
O Cloud Run oferece cota de uso gratuita , mas você ainda precisa ter uma conta do Cloud Billing associada ao seu projeto do Firebase para usar ou testar o Cloud Run.
Habilite a API e instale o SDK
Ative a API Cloud Run no console de APIs do Google:
Abra a 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 Cloud SDK.
Verifique se a ferramenta
gcloud
está configurada para o projeto correto:gcloud config list
Etapa 1 : Escreva o aplicativo de exemplo
Observe que o Cloud Run oferece suporte a muitas outras linguagens além das mostradas no exemplo a seguir.
Ir
Crie um novo diretório chamado
helloworld-go
e altere o diretório para ele:mkdir helloworld-go
cd helloworld-go
Crie um novo arquivo chamado
helloworld.go
e adicione o seguinte código:Este código cria um servidor web básico que escuta na porta definida pela variável de ambiente
PORT
.
Seu aplicativo está concluído e pronto para ser conteinerizado e carregado no Container Registry.
Node.js
Crie um novo diretório chamado
helloworld-nodejs
e altere o diretório para ele: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:Este código cria um servidor web básico que escuta na porta definida pela variável de ambiente
PORT
.
Seu aplicativo está concluído e pronto para ser conteinerizado e carregado no Container Registry.
Pitão
Crie um novo diretório chamado
helloworld-python
e altere o diretório para ele:mkdir helloworld-python
cd helloworld-python
Crie um novo arquivo chamado
app.py
e adicione o seguinte código:Este código cria um servidor web básico que escuta na porta definida pela variável de ambiente
PORT
.
Seu aplicativo está concluído e pronto para ser conteinerizado e carregado no Container Registry.
Java
Instale Java SE 8 ou posterior JDK e CURL .
Observe que só precisamos fazer isso para criar o novo projeto web na próxima etapa. O Dockerfile, descrito posteriormente, carregará todas as dependências no contêiner.
No console, crie um novo projeto web vazio usando cURL e descompacte os comandos:
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
:Este código cria um servidor web básico que escuta na porta definida pela variável de ambiente
PORT
.
Seu aplicativo está concluído e pronto para ser conteinerizado e carregado no Container Registry.
Etapa 2 : conteinerizar um aplicativo e carregá-lo no Container Registry
Conteinerize o aplicativo de exemplo criando um novo arquivo chamado
Dockerfile
no mesmo diretório dos arquivos de origem. Copie o seguinte conteúdo em seu arquivo.Ir
Node.js
Pitão
Java
Crie sua imagem de contêiner usando o Cloud Build executando o seguinte comando no diretório que contém seu Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
Após sucesso, você verá uma mensagem de SUCESSO contendo o nome da imagem
(gcr.io/ PROJECT_ID /helloworld
).
A imagem do contêiner agora está armazenada no Container Registry e pode ser reutilizada, se desejado.
Observe que, em vez do Cloud Build, você pode usar uma versão do Docker instalada localmente para criar seu contêiner localmente .
Etapa 3 : implantar a imagem do contêiner no 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 obter o melhor desempenho, coloque seu serviço Cloud Run com hospedagem usando as seguintes regiões:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
As reescritas no Cloud Run a partir do Hosting são compatíveis com as 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 até que a implantação seja concluída. Em caso de sucesso, a linha de comando exibe a URL do serviço. Por exemplo
https://helloworld- RANDOM_HASH -us-central1.a.run.appVisite seu contêiner implantado abrindo a URL do serviço em um navegador da web.
A próxima etapa mostra como acessar esse aplicativo em contêiner a partir de um URL do Firebase Hosting para que ele possa gerar conteúdo dinâmico para seu site hospedado no Firebase.
Etapa 4: solicitações de hospedagem direta para seu aplicativo em contêiner
Com regras de reescrita , você pode direcionar 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
em seu site de hospedagem para acionar a inicialização e a execução de sua instância de contêiner helloworld
.
Certifique-se de que:
Você tem a versão mais recente da CLI do Firebase .
Você inicializou o Firebase Hosting.
Para obter instruções detalhadas sobre como instalar a CLI e inicializar o Hosting, consulte o guia de primeiros passos do Hosting .
Abra seu arquivo
firebase.json
.Adicione a seguinte configuração
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 sua configuração de hospedagem em seu 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 dos seguintes URLs:
Seus subdomínios do Firebase:
PROJECT_ID .web.app/
ePROJECT_ID .firebaseapp.com/
Quaisquer domínios personalizados conectados:
CUSTOM_DOMAIN /
Visite a página de configuração de hospedagem para obter mais detalhes sobre regras de reescrita . Você também pode aprender sobre a ordem de prioridade das respostas para diversas configurações de hospedagem.
Teste localmente
Durante o desenvolvimento, você pode executar e testar a imagem do contêiner localmente. Para obter instruções detalhadas, visite a documentação do Cloud Run .
Próximos passos
Configure o 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 o Cloud Run, incluindo guias de instruções detalhados para instalar, gerenciar e configurar contêineres.
Revise os preços , as cotas e os limites do Cloud Run.