Esta página descreve como configurar a porta do contentor, o comando de ponto de entrada e os argumentos para um serviço do Cloud Run.
Quando o Cloud Run inicia um contentor, executa o comando de ponto de entrada predefinido da imagem e os argumentos de comando predefinidos. Se quiser substituir o ponto de entrada predefinido e os argumentos de comando da imagem, pode usar os campos command
e args
na configuração do contentor. O campo command
especifica o comando real executado pelo contentor. O campo args
especifica os argumentos transmitidos a esse comando.
Tenha em atenção que pode ter um máximo de 1000 argumentos por contentor para cada serviço.
Funções necessárias
Para receber as autorizações de que precisa para configurar e implementar serviços do Cloud Run, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
-
Programador do Cloud Run (
roles/run.developer
) no serviço Cloud Run -
Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço
Se estiver a implementar um serviço ou uma função a partir do código fonte, também tem de ter funções adicionais concedidas no seu projeto e na conta de serviço do Cloud Build.
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Configure a porta do contentor
Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.
Para os serviços do Cloud Run, o Cloud Run injeta a variável de ambiente PORT
no contentor. Se implementar vários contentores num serviço, este é o contentor de entrada. O contentor escuta na porta definida pela variável de ambiente PORT
, em vez de numa porta específica codificada. Se não for possível, configure a escuta para ocorrer na porta que envia pedidos para o contentor. Tenha em atenção que as definições de porta não se aplicam a tarefas do Cloud Run.
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Contentor.
- Especifique a porta para a qual quer que os pedidos sejam enviados, se não for o valor predefinido de
8080
. Esta ação também define a variável de ambientePORT
.
- Especifique a porta para a qual quer que os pedidos sejam enviados, se não for o valor predefinido de
Clique em Criar ou Implementar.
gcloud
Pode atualizar a configuração da porta de um serviço com o seguinte comando:
gcloud run services update SERVICE --port PORT
Substitua o seguinte:
- SERVICE: o nome do serviço.
- PORT: a porta para enviar pedidos. Tenha em atenção que a porta predefinida é
8080
.
Também pode configurar portas durante a implementação através do comando:
gcloud run deploy --image IMAGE_URL --port PORT
Substitua IMAGE_URL por uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de
já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
YAML
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
gcloud run services describe SERVICE --format export > service.yaml
Atualize o atributo
containerPort:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL ports: - containerPort: PORT
Substitua o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PORT: a porta para enviar pedidos.
- REVISION com um novo nome de revisão ou elimine-o (se existir). Se fornecer um novo nome de revisão, este tem de cumprir os seguintes critérios:
- Começa com
SERVICE-
- Contém apenas letras minúsculas, números e
-
- Não termina com um
-
- Não exceder 63 carateres
- Começa com
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na sua configuração do Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
name = "hello-1"
ports {
container_port = PORT
}
image = "IMAGE_URL"
}
}
}
Substitua o seguinte:
- SERVICE: o nome do seu serviço do Cloud Run.
- REGION: a Google Cloud região. Por exemplo,
europe-west1
. - IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PORT: a porta para enviar pedidos.
Configure o ponto de entrada e os argumentos
Qualquer alteração de configuração leva à criação de uma nova revisão. As revisões subsequentes também vão receber automaticamente esta definição de configuração, a menos que faça atualizações explícitas para a alterar.
O comando e os argumentos do contentor especificados substituem a imagem predefinida
ENTRYPOINT
e CMD
.
Pode definir o comando e os argumentos do ponto de entrada através da Google Cloud consola, da CLI Google Cloud ou de um ficheiro YAML quando cria um novo serviço ou implementa uma nova revisão:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Contentor.
- Especifique o comando que quer que o contentor execute, se não for o comando definido no seu contentor, e especifique opcionalmente os argumentos para o comando do ponto de entrada.
Clique em Criar ou Implementar.
gcloud
Para atualizar o comando de início e os argumentos de um serviço existente:
gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N
Substitua o seguinte:
- COMMAND: o comando com o qual o contentor deve ser iniciado se não estiver a usar o comando predefinido.
- ARG1: o argumento que está a enviar para o comando do contentor. Use uma lista delimitada por vírgulas para mais do que um argumento.
Para especificar o ponto de entrada e os argumentos durante a implementação de um serviço novo ou existente:
gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N
Substitua IMAGE_URL por uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de
já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Para limpar todos os comandos e argumentos de ponto de entrada que definiu (restaurar as predefinições do contentor), forneça strings vazias da seguinte forma:
gcloud run deploy --image IMAGE_URL --command "" --args ""
YAML
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
gcloud run services describe SERVICE --format export > service.yaml
Atualize os atributos
command
eargs
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE_URL command: - COMMAND args: - ARG1 - ARG-N
Substitua o seguinte:
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - COMMAND: o comando com o qual o contentor deve ser iniciado se não estiver a usar o comando predefinido.
- ARG1: o argumento que está a enviar para o comando do contentor. Se usar vários argumentos, especifique cada um na sua própria linha, por exemplo, como mostrado, ARG-N.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na sua configuração do Terraform:O recurso google_cloud_run_v2_service
anterior especifica um comando e
args. Substitua /server
pelo comando usado para iniciar o seu contentor e adicione os argumentos necessários à matriz args
.
Use sinais de igual ou vírgulas nos argumentos
Se usar sinais de igual nos argumentos, forneça-os no seguinte formato:
gcloud run deploy \
--args="--repo-allowlist=github.com/example/example_demo"
Se os seus argumentos usarem vírgulas, consulte a secção Configurar variáveis de ambiente para ver detalhes sobre como ignorá-las.
Configure a ordem de início do contentor para implementações de sidecar
Para especificar a ordem de arranque do contentor numa implementação sidecar, usa a funcionalidade de dependências de contentores. Especifica os contentores que têm dependências e lista os contentores dos quais dependem: esses contentores são iniciados primeiro. Os contentores que não têm dependências são sempre iniciados primeiro e em simultâneo.
Tem de usar sondas de verificação do estado de arranque se quiser usar esta funcionalidade com êxito. A análise de arranque permite ao Cloud Run inspecionar o estado de um contentor dependente, garantindo que é aprovado com êxito antes de iniciar o contentor seguinte. Se não usar verificações de estado, os contentores são iniciados na ordem especificada, mesmo que os contentores dos quais dependem não sejam iniciados.
Tenha em atenção que os contentores de entrada têm uma sondagem de verificação de estado de arranque predefinida.
Pode usar a Google Cloud consola, a Google Cloud CLI ou o YAML para especificar a ordem de início:
Consola
Na Google Cloud consola, aceda à página do Cloud Run:
- Para um serviço existente, clique no serviço na lista e selecione Editar e implementar nova revisão para apresentar o formulário de implementação de revisões.
- Para um novo serviço, selecione Serviços no menu e clique em Implementar contentor para apresentar o formulário Criar serviço.
Para um novo serviço, especifique o nome do serviço, o URL do contentor de entrada, a atribuição de CPU, o controlo de entrada e a autenticação. No separador Contentores, volumes, trabalhar em rede, segurança, faça o seguinte:
- Configure o contentor de entrada.
- Para adicionar cada um dos outros contentores que está a implementar, clique em Adicionar contentor.
- Para todos os contentores, exceto o contentor de entrada, configure uma verificação de estado de arranque. Os contentores de entrada têm uma verificação de estado de arranque predefinida.
- Se um contentor precisar que outros contentores sejam iniciados primeiro antes de poder ser iniciado, use o menu Ordem de início do contentor para selecionar os contentores que têm de ser iniciados primeiro.
Para um serviço existente, siga estes passos:
- Para todos os contentores, exceto o contentor de entrada, configure uma verificação de estado de arranque. Os contentores de entrada têm uma verificação de estado de arranque predefinida.
- Cada contentor é apresentado com o seu próprio menu de Ordem de arranque do contentor. Se um contentor precisar que outros contentores sejam iniciados primeiro antes de poder ser iniciado, use o menu Ordem de início do contentor para selecionar os contentores que têm de ser iniciados primeiro.
Conclua todas as outras configurações necessárias e, de seguida, clique em Criar para um novo serviço ou em Implementar para um serviço existente. Aguarde até que a implementação esteja concluída.
gcloud
Antes de usar a CLI Google Cloud para especificar a ordem de arranque, tem de configurar uma verificação de estado de arranque para todos os contentores, exceto o contentor de entrada. Os contentores de entrada têm uma verificação de estado de arranque predefinida. Não pode configurar verificações de estado com a CLI gcloud.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para implementar vários contentores num serviço com uma ordem de arranque especificada, execute o comando:
- SERVICE: o nome do serviço para o qual está a fazer a implementação. Pode omitir este parâmetro por completo, mas é-lhe pedido o nome do serviço se o omitir.
- CONTAINER_PORT: a porta onde o contentor de entrada ouve os pedidos recebidos. Ao contrário de um serviço de contentor único, para um serviço que contenha sidecars, não existe uma porta predefinida para o contentor de entrada. Tem de configurar explicitamente a porta do contentor para o contentor de entrada e apenas um contentor pode ter a porta exposta.
- INGRESS_IMAGE: uma referência à imagem do contentor que deve receber pedidos, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. SIDECAR_IMAGE: uma referência à imagem do contentor auxiliar.
Se quiser configurar cada contentor no comando de implementação, forneça a configuração de cada contentor após os parâmetros
container
.Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
gcloud run services describe SERVICE --format export > service.yaml
Atualize o atributo
container-dependencies
:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
Substitua o seguinte:
- CONTAINER1: o nome do primeiro contentor que depende de um ou mais contentores. Tenha em atenção que pode definir o nome do contentor no YAML: o Cloud Run gera automaticamente um nome se não for especificado.
- CONTAINER2: o nome do contentor que tem de ser iniciado antes de CONTAINER1.
- CONTAINER3: o nome do segundo contentor que depende de um ou mais contentores.
No exemplo apresentado no fragmento YAML, CONTAINER2 é iniciado primeiro, CONTAINER1 é iniciado em segundo lugar e CONTAINER3 é iniciado por último.
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
- SERVICE: o nome do seu serviço do Cloud Run.
- REGION: a Google Cloud região. Por exemplo,
europe-west1
. - CONTAINER1: o nome do primeiro contentor que depende de um ou mais contentores.
- CONTAINER2: o nome do contentor que tem de ser iniciado antes de CONTAINER1.
- CONTAINER3: o nome do contentor que depende de CONTAINER1 e CONTAINER2.
gcloud run deploy SERVICE \ --container CONTAINER_1_NAME --image='INGRESS_IMAGE' --port='CONTAINER_PORT' \ --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \ --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME
Substitua o seguinte:
YAML
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte a um recursogoogle_cloud_run_v2_service
na sua configuração do Terraform:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
name = "CONTAINER1"
ports {
container_port = 8080
}
image = "us-docker.pkg.dev/cloudrun/container/hello"
depends_on = ["CONTAINER2"]
}
containers {
name = "CONTAINER2"
image = "us-docker.pkg.dev/cloudrun/container/hello"
env {
name = "PORT"
value = "8081"
}
startup_probe {
http_get {
port = 8081
}
}
}
containers {
name = "CONTAINER3"
image = "us-docker.pkg.dev/cloudrun/container/hello"
depends_on = ["CONTAINER1", "CONTAINER2"]
env {
name = "PORT"
value = "8080"
}
startup_probe {
http_get {
port = 8080
}
}
}
}
}
Substitua o seguinte:
Ver definições do contentor
Para ver as definições atuais do contentor do seu serviço do Cloud Run:
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Clique no serviço que lhe interessa para abrir a página Detalhes do serviço.
Clique no separador Revisões.
No painel de detalhes à direita, a definição do contentor é apresentada no separador Contentor.
gcloud
Use o seguinte comando:
gcloud run services describe SERVICE
Localize a definição do contentor na configuração devolvida.