Esta página descreve como implementar serviços no Cloud Run através de um ficheiro baseado na especificação de composição.
Pode implementar no Cloud Run com um ficheiro de composição das seguintes formas:
A utilização do Compose para implementar no Cloud Run é ideal para o desenvolvimento e simplifica a transição do seu ambiente local para um ambiente na nuvem. Permite-lhe manter um formato de configuração consistente para as aplicações locais e implementadas.
Para gerir ambientes de produção num ambiente de infraestrutura como código (IaC), recomendamos a utilização do Terraform.
Limitações
- A implementação do Compose implementa um único serviço do Cloud Run com vários contentores.
- A implementação do Compose traduz apenas um subconjunto de funcionalidades do Cloud Run suportadas.
- Os serviços criados com o Compose estão definidos por predefinição para 1 instância máxima.
- Embora simplifique a implementação, a implementação do Cloud Run Compose não substitui uma estratégia abrangente de infraestrutura como código para ambientes de produção.
Implemente serviços a partir de imagens de contentores com o Compose
Defina os seus serviços num ficheiro compose.yaml e implemente-os a partir de imagens de contentores existentes. Para mais informações, consulte o artigo Implemente imagens de contentores.
Exemplo: aplicação de serviço único
O exemplo seguinte mostra um ficheiro compose.yaml para um serviço Web que usa uma imagem de contentor pré-criada.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
Implemente os serviços
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, é 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 com o Compose
Defina os seus serviços num ficheiro compose.yaml e implemente-os criando a partir do código-fonte. Para mais informações, consulte o artigo Implemente serviços a partir do código fonte.
Exemplo: aplicação de serviço único
O exemplo seguinte mostra um ficheiro compose.yaml para um serviço Web criado a partir da origem no diretório atual.
services:
web:
build: .
ports:
- "8080:8080"
Implemente os serviços
No diretório do projeto, crie um ficheiro
compose.yamlcom as suas definições de serviço.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, é 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 .
Funcionalidades suportadas
Quando implementa através de um ficheiro compose.yaml, o Cloud Run pode aprovisionar automaticamente outros recursos Google Cloud , conforme definido no seu ficheiro Compose. Se forem necessários recursos, o Cloud Run pede-lhe
o consentimento antes de os criar.
O Cloud Run suporta o seguinte subconjunto de funcionalidades do Compose:
| Campo de composição | Mapeamento e descrição do Cloud Run |
|---|---|
services |
Os serviços são mapeados para contentores individuais no serviço do Cloud Run implementado. |
volumes |
Parcialmente compatível. Traduz as montagens |
secrets |
Compatível. Usando o Secret Manager. |
configs |
Compatível. Usar o Cloud Storage. |
build |
O Cloud Build cria o contentor com o contexto de compilação, etiquetando-o e enviando-o para o repositório |
image |
Implementa uma imagem de contentor pré-criada a partir de um registo suportado. Use se tiver uma imagem pré-criada. Suporta apenas imagens do Docker Hub e do Artifact Registry. Para imagens personalizadas, pode enviar imagens para o Artifact Registry e usá-las. |
ports |
Uma lista de mapeamentos de portas, como |
expose |
Uma lista de portas a expor, mas não a publicar, como |
depends_on |
Define a ordem de arranque do contentor. Isto garante que qualquer serviço indicado tem uma porta definida por |
cpu_count/cpus |
Uma sugestão usada para definir os limites de CPU e memória do Cloud Run, atribuindo automaticamente recursos de acordo com a seguinte lógica:
|
container_name |
Define o nome do contentor para a resolução de dependências, sendo o nome do serviço o valor predefinido se não for especificado. |
environment |
Transmite variáveis de ambiente para o contentor correspondente no Cloud Run. |
command |
Substitui o comando predefinido do contentor, declarado pelo contentor, ao mapear para o atributo |
entrypoint |
Compatível. |
env_file |
Compatível. |
x-google-cloudrun:ingress-container |
(Extensão) Adicione esta extensão específica da Google a um serviço e defina-a como |
x-google-cloudrun:volume-type: in-memory |
(Extensão) Adicione esta extensão específica da Google a um volume e defina-o como |
Secrets mapeados para o Secret Manager
Se o seu ficheiro compose.yaml definir secrets, a CLI gcloud aprovisiona segredos do Secret Manager para armazenar estes dados.
Volumes e configurações mapeados para o Cloud Storage
Se o seu ficheiro compose.yaml definir volumes ou configs de nível superior, a CLI gcloud aprovisiona um contentor do Cloud Storage para gerir estes dados. É criado um único contentor por implementação, usando pastas para separar
volumes e configurações.
- Volumes com nome: é criada uma pasta vazia correspondente ao nome do volume no contentor.
- Montagens de ligação: para montagens de ligação, o Cloud Run carrega o conteúdo do diretório de origem local para uma pasta no contentor antes da implementação.
- Configs: para cada configuração definida com uma origem
file:, o Cloud Run carrega o conteúdo do ficheiro local para uma pasta no contentor.
Funções necessárias
Durante a implementação, o Cloud Run concede automaticamente à identidade de serviço do serviço implementado as funções necessárias para aceder aos recursos aprovisionados:
- Bucket do Cloud Storage:
roles/storage.objectUser - Segredos do Secret Manager:
roles/secretmanager.secretAccessor
Comunicação entre contentores da mesma instância
O Cloud Run adiciona uma entrada ao ficheiro /etc/hosts em cada contentor. Esta entrada mapeia os nomes dos serviços do seu ficheiro compose.yaml para os respetivos endereços IP internos, o que permite que os serviços comuniquem entre si através dos respetivos nomes de serviços.
O que se segue?
- Saiba mais acerca da gestão de serviços.
- Saiba como configurar a autenticação.
- Saiba como gerir segredos.