Configurar contêineres

Nesta página, descrevemos como configurar a porta do contêiner, o comando e os argumentos do ponto de entrada para os serviços do Cloud Run, além de como configurar o comando e os argumentos do ponto de entrada para jobs do Cloud Run.

Quando o Cloud Run inicia um contêiner, ele executa o comando entrypoint padrão e os argumentos de comando padrão da imagem. Se você quiser modificar os argumentos de ponto de entrada e comando padrão da imagem, use os campos command e args na configuração do contêiner. O campo command especifica o comando real executado pelo contêiner. O campo args especifica os argumentos passados para esse comando.

Configurar a porta do contêiner (serviços)

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

Para os serviços do Cloud Run, o Cloud Run injeta a variável de ambiente PORT no contêiner. O contêiner precisa detectar a porta definida pela variável de ambiente PORT em vez de uma porta codificada específica. No entanto, se isso não for possível, configure quais solicitações de porta serão enviadas para o contêiner. As configurações de porta não se aplicam a jobs do Cloud Run.

Console

  1. Acessar o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço conforme desejado e clique em Contêiner, redes, segurança para expandir a página de configuração do serviço.

  4. Clique na guia Contêiner.

    imagem

    • Especifique a porta em que você quer que as solicitações sejam enviadas, se não for o valor padrão de "8080". Isso também define a variável de ambiente "PORT".
  5. Clique em Criar ou Implantar.

Linha de comando

É possível atualizar a configuração de porta de um serviço usando o seguinte comando:

gcloud run services update SERVICE --port PORT

Substitua:

  • SERVICE pelo nome do serviço;
  • PORT pela porta para enviar solicitações. Observe que a porta padrão é 8080.

Também é possível configurar portas durante a implantação usando o comando:

gcloud run deploy --image IMAGE_URL --port PORT

IMAGE_URL por uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest; Ao usar o Artifact Registry, o URL tem o seguinte formato: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. .

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 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:

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Ao usar o Artifact Registry, o URL tem o seguinte formato: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PORT pela porta para enviar solicitações
    • REVISION por um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Configurar o comando e os argumentos do ponto de entrada do contêiner

É possível configurar comandos e argumentos de ponto de entrada para jobs e serviços do Cloud Run.

Para serviços do Cloud Run

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

O comando e os argumentos do contêiner especificados modificam as imagens padrão ENTRYPOINT e CMD.

É possível definir comandos e argumentos de ponto de entrada usando o console do Google Cloud, a linha de comando gcloud ou um arquivo .yaml ao criar um novo serviço ou implantar uma nova revisão:

Console

  1. Acessar o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço conforme desejado e clique em Contêiner, redes, segurança para expandir a página de configuração do serviço.

  4. Clique na guia Contêiner.

    imagem

    • Especifique o comando que você quer que o contêiner execute, se não for o definido no contêiner, e, opcionalmente, especifique os argumentos para o comando entrypoint.
  5. Clique em Criar ou Implantar.

Linha de comando

Para atualizar o comando e os argumentos de inicialização de um serviço, faça o seguinte:

gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N

Substituir

  • COMMAND pelo comando com que o contêiner será iniciado se você não estiver usando o comando padrão;
  • ARG1 pelo argumento que você está enviando para o comando do contêiner. Use uma lista delimitada por vírgulas para mais de um argumento.

Para especificar o ponto de entrada e os argumentos durante a implantação de um serviço novo ou existente:

gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

IMAGE_URL por uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest; Ao usar o Artifact Registry, o URL tem o seguinte formato: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Para limpar os comandos e argumentos do ponto de entrada que você definiu (restaurar para os padrões do contêiner), forneça strings vazias da seguinte maneira:

gcloud run deploy --image IMAGE_URL --command "" --args ""

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize os atributos command e args:

    spec:
      containers:
      - image: IMAGE_URL
        command:
        - COMMAND
        args:
        - "ARG1"
        - "ARG-N"
    

    Substitua:

    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Ao usar o Artifact Registry, o URL tem o seguinte formato: REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • COMMAND pelo comando com que o contêiner será iniciado se você não estiver usando o comando padrão;
    • ARG1 pelo argumento que você está enviando para o comando do contêiner. Se você usar vários argumentos, especifique cada um em uma linha própria, por exemplo, ARG-N, como mostrado abaixo.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte código a um recurso google_cloud_run_service na configuração do Terraform. Substitua /server pelo comando usado para iniciar o contêiner e adicione os argumentos necessários à matriz args.

template {
  spec {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Container "entry-point" command
      # https://cloud.google.com/run/docs/configuring/containers#configure-entrypoint
      command = ["/server"]

      # Container "entry-point" args
      # https://cloud.google.com/run/docs/configuring/containers#configure-entrypoint
      args = []
    }
  }

Para jobs do Cloud Run

Para configurar o entrypoint de comando e os argumentos para jobs, siga estas etapas:

Console

  1. Acesse o Cloud Run

  2. Se você estiver configurando um novo job, clique na guia Jobs e preencha a página inicial de configurações do job conforme quiser. Se você estiver configurando um job, clique nele e em Editar.

  3. Clique em Contêiner, variáveis e secrets, conexões e segurança para expandir a página de propriedades do job.

  4. Clique na guia Geral.

    imagem

    • Especifique o comando que você quer que o contêiner execute, se não for o definido no contêiner, e, opcionalmente, especifique os argumentos para o comando entrypoint.
  5. Clique em Criar ou Atualizar.

Linha de comando

  1. Para definir o comando inicial e os argumentos de um novo job:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

    Substituir

    • JOB_NAME pelo nome do job.
    • COMMAND pelo comando com que o contêiner será iniciado se você não estiver usando o comando padrão;
    • ARG1 pelo argumento que você está enviando para o comando do contêiner ou use uma lista delimitada por vírgulas para mais de um argumento.
    • IMAGE_URL por uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest;

Para atualizar o comando e os argumentos de um job existente:

gcloud run jobs update JOB_NAME --command COMMAND --args ARG1,ARG-N 

YAML

Faça o download e veja a configuração do job que já existe usando o comando gcloud run jobs describe --format export, que gera resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run jobs replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Atualize os atributos args: e command:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - args:
                - 'ARG1'
                - 'ARG-N'
                command:
                - COMMAND
                image: IMAGE

    Substitua:

    • COMMAND pelo comando com que o contêiner será iniciado se você não estiver usando o comando padrão;
    • ARG1 pelo argumento que você está enviando para o comando do contêiner. Se quiser, especifique outros argumentos, cada um em uma linha separada.

    Também é possível especificar mais configurações, como variáveis de ambiente ou limites de memória.

  3. Atualize a configuração do job que já existe:

    gcloud run jobs replace job.yaml

Para limpar os comandos e argumentos do ponto de entrada que você definiu (restaurar para os padrões do contêiner), forneça strings vazias da seguinte maneira:

gcloud run jobs update JOB_NAME --command "" --args "" 

Como usar sinais de igual ou vírgulas em argumentos

Se você usar sinais de igual nos argumentos, insira-os usando o seguinte formato:

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

Se os argumentos usarem vírgulas, consulte Como configurar variáveis de ambiente para mais detalhes sobre como fazer escape.

Configurar ordem de inicialização do contêiner para implantações sidecar (serviços)

Para especificar a ordem de inicialização do contêiner em uma implantação sidecar, use o recurso de dependências de contêiner. Especifique os contêineres que têm dependências e liste os contêineres de que dependem: eles são iniciados primeiro. Os contêineres que não têm dependências são sempre iniciados primeiro e simultaneamente.

Se você usar sondagens de verificação de integridade, o Cloud Run inspecionará a integridade de um contêiner dependente, garantindo que ele seja aprovado com sucesso antes de iniciar o próximo contêiner. Se você não usar verificações de integridade, os contêineres serão iniciados na ordem especificada, mesmo que os contêineres de que eles dependem não sejam iniciados.

Durante a visualização, use o método YAML para configurar a ordem de inicialização do contêiner. Para especificar a ordem de inicialização:

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo container-dependencies:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    Substituir

    • CONTAINER1 pelo nome do primeiro contêiner que depende de um ou mais contêineres. Observe que é possível definir o nome do contêiner no YAML. O Cloud Run gerará um nome automaticamente se nenhum for especificado.
    • CONTAINER2 pelo nome do contêiner que precisa ser iniciado antes de CONTAINER1.
    • CONTAINER3 pelo nome do segundo contêiner que depende de um ou mais contêineres.

    No exemplo do snippet YAML, CONTAINER2 é iniciado primeiro, CONTAINER1 é iniciado em seguida e CONTAINER3 é iniciado por último.

  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Ver configurações do contêiner

Para ver as configurações atuais do contêiner para seu serviço do Cloud Run, faça o seguinte:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço de seu interesse para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes à direita, a configuração de contêiner está listada na guia Geral.

Linha de comando

  1. Use o comando a seguir:

    gcloud run services describe SERVICE
  2. Localize a configuração de contêiner na configuração retornada.

Para ver as configurações atuais do contêiner para o job do Cloud Run, faça o seguinte:

Console

  1. Acessar jobs do Cloud Run

  2. Clique no job em que você tem interesse para abrir a página Detalhes do job.

  3. Clique na guia Configuração.

  4. Localize a definição do contêiner nos detalhes da configuração.

Linha de comando

  1. Use o comando a seguir:

    gcloud run jobs describe JOB_NAME
  2. Localize a configuração de contêiner na configuração retornada.