Nesta página, descrevemos como implantar serviços no Cloud Run usando um arquivo baseado na especificação do Compose.
É possível fazer a implantação no Cloud Run com um arquivo Compose das seguintes maneiras:
Usar o Compose para fazer implantações no Cloud Run é ideal para o desenvolvimento e simplifica a transição do ambiente local para um ambiente de nuvem. Ele permite manter um formato de configuração consistente para aplicativos locais e implantados.
Para gerenciar ambientes de produção em um ambiente de infraestrutura como código (IaC), recomendamos usar o Terraform.
Limitações
- A implantação do Compose implanta um único serviço do Cloud Run com vários contêineres.
- A implantação do Compose traduz apenas um subconjunto de recursos compatíveis do Cloud Run.
- Os serviços criados com o Compose são definidos por padrão como 1 instância máxima.
- Embora simplifique a implantação, o Cloud Run Compose deploy não substitui uma estratégia abrangente de infraestrutura como código para ambientes de produção.
Implantar serviços de imagens de contêiner com o Compose
Defina seus serviços em um arquivo compose.yaml e implante-os de imagens de contêiner
existentes. Para mais informações, consulte Implantar imagens de contêiner.
Exemplo: aplicativo de serviço único
O exemplo a seguir mostra um arquivo compose.yaml para um serviço da Web que usa uma
imagem de contêiner pré-criada.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
Implante os serviços
Para implantar os serviços, execute o comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlResponda
ya todas as solicitações para instalar os componentes necessários ou ativar as APIs.Opcional: torne seu serviço público se você quiser permitir o acesso não autenticado ao serviço.
Após a implantação, o URL do serviço do Cloud Run é exibido. Copie esse URL e cole no navegador para ver o contêiner em execução. É possível desativar a autenticação padrão no console do Google Cloud .
Implantar a partir da origem com o Compose
Defina seus serviços em um arquivo compose.yaml e implante-os criando com base no
código-fonte. Para mais informações, consulte Implantar serviços do código-fonte.
Exemplo: aplicativo de serviço único
O exemplo a seguir mostra um arquivo compose.yaml para um serviço da Web que é criado
da origem no diretório atual.
services:
web:
build: .
ports:
- "8080:8080"
Implante os serviços
No diretório do projeto, crie um arquivo
compose.yamlcom as definições de serviço.Para implantar os serviços, execute o comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlResponda
ya todas as solicitações para instalar os componentes necessários ou ativar APIs.Opcional: torne seu serviço público se você quiser permitir o acesso não autenticado ao serviço.
Após a implantação, o URL do serviço do Cloud Run é exibido. Copie esse URL e cole no navegador para ver o contêiner em execução. É possível desativar a autenticação padrão no console do Google Cloud .
Recursos compatíveis
Ao fazer a implantação usando um arquivo compose.yaml, o Cloud Run pode provisionar automaticamente outros recursos Google Cloud , conforme definido no arquivo do Compose. Se forem necessários recursos, o Cloud Run vai pedir sua permissão antes de criá-los.
O Cloud Run é compatível com o seguinte subconjunto de recursos do Compose:
| Campo de composição | Mapeamento e descrição do Cloud Run |
|---|---|
services |
Os serviços são mapeados para contêineres individuais no serviço implantado do Cloud Run. |
volumes |
Parcialmente compatível. Traduz as montagens |
secrets |
Compatível. Ao usar o Secret Manager. |
configs |
Compatível. Usar o Cloud Storage. |
build |
O Cloud Build cria o contêiner usando o contexto de build, marcando e
enviando para o repositório |
image |
Implanta uma imagem de contêiner pré-criada de um registro compatível. Use se você tiver uma imagem pré-criada. Aceita apenas imagens do Docker Hub e do Artifact Registry. Para imagens personalizadas, é possível enviar imagens para o Artifact Registry e usá-las. |
ports |
Uma lista de mapeamentos de portas, como |
expose |
Uma lista de portas a serem expostas, mas não publicadas, como |
depends_on |
Define a ordem de inicialização do contêiner. Isso garante que qualquer serviço listado em
|
cpu_count / cpus |
Uma dica usada para definir limites de CPU e memória do Cloud Run, alocando recursos automaticamente de acordo com a seguinte lógica:
|
container_name |
Define o nome do contêiner para resolução de dependências, usando o nome do serviço como padrão se não for especificado. |
environment |
Transmite variáveis de ambiente para o contêiner correspondente no Cloud Run. |
command |
Substitui o comando padrão do contêiner, declarado por ele, mapeando para o atributo |
entrypoint |
Compatível. |
env_file |
Compatível. |
x-google-cloudrun:ingress-container |
(Extensão) Adicione essa extensão específica do Google a um serviço e defina como
|
x-google-cloudrun:volume-type: in-memory |
(Extensão) Adicione essa extensão específica do Google a um volume e defina como
|
Secrets mapeados para o Secret Manager
Se o arquivo compose.yaml definir secrets, a CLI gcloud
provisionará secrets do Secret Manager para armazenar esses dados.
Volumes e configurações mapeados para o Cloud Storage
Se o arquivo compose.yaml definir volumes ou configs de nível superior, a
CLI gcloud vai provisionar um bucket do Cloud Storage para gerenciar esses
dados. Um único bucket é criado por implantação, usando pastas para separar volumes e configurações.
- Volumes nomeados: uma pasta vazia correspondente ao nome do volume é criada no bucket.
- Montagens de vinculação: para montagens de vinculação, o Cloud Run faz upload do conteúdo do diretório de origem local para uma pasta no bucket antes da implantação.
- Configurações: para cada configuração definida com uma origem
file:, o Cloud Run envia o conteúdo do arquivo local para uma pasta no bucket.
Funções exigidas
Durante a implantação, o Cloud Run concede automaticamente à identidade do serviço implantado os papéis necessários para acessar os recursos provisionados:
- Bucket do Cloud Storage:
roles/storage.objectUser - Secrets do Secret Manager:
roles/secretmanager.secretAccessor
Comunicação entre contêineres da mesma instância
O Cloud Run adiciona uma entrada ao arquivo /etc/hosts em cada
contêiner. Essa entrada mapeia os nomes de serviço do arquivo compose.yaml para
os endereços IP internos deles, permitindo que os serviços se comuniquem entre si
usando os nomes de serviço.
A seguir
- Saiba mais sobre como gerenciar serviços.
- Saiba como configurar a autenticação.
- Saiba como gerenciar secrets.