Criar e implantar um serviço em PHP

Saiba como criar um aplicativo Hello World simples, empacotá-lo em uma imagem de contêiner, fazer upload da imagem do contêiner no Container Registry e, em seguida, implantar a imagem do contêiner no Cloud Run. É possível usar outros idiomas além dos mostrados.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Instale e inicialize o SDK do Cloud..

Como gravar o aplicativo de amostra

Para escrever um aplicativo em PHP:

  1. Crie um novo diretório com o nome helloworld-php e altere o diretório nele:

    mkdir helloworld-php
    cd helloworld-php
    
  2. Crie um arquivo chamado index.php e cole o código a seguir nele, lembre-se de adicionar <?php à parte superior do arquivo:

    
    $name = getenv('NAME', true) ?: 'World';
    echo sprintf('Hello %s!', $name);
    

    Esse código responde às solicitações com a saudação "Hello World". O processamento de HTTP é feito por um servidor da Web Apache no contêiner.

  3. Crie um novo arquivo chamado Dockerfile no mesmo diretório dos arquivos de origem. O Dockerfile do PHP inicia um servidor da Web Apache que detecta na porta definida pela variável de ambiente PORT:

    
    # Use the official PHP image.
    # https://hub.docker.com/_/php
    FROM php:8.0-apache
    
    # Configure PHP for Cloud Run.
    # Precompile PHP code with opcache.
    RUN docker-php-ext-install -j "$(nproc)" opcache
    RUN set -ex; \
      { \
        echo "; Cloud Run enforces memory & timeouts"; \
        echo "memory_limit = -1"; \
        echo "max_execution_time = 0"; \
        echo "; File upload at Cloud Run network limit"; \
        echo "upload_max_filesize = 32M"; \
        echo "post_max_size = 32M"; \
        echo "; Configure Opcache for Containers"; \
        echo "opcache.enable = On"; \
        echo "opcache.validate_timestamps = Off"; \
        echo "; Configure Opcache Memory (Application-specific)"; \
        echo "opcache.memory_consumption = 32"; \
      } > "$PHP_INI_DIR/conf.d/cloud-run.ini"
    
    # Copy in custom code from the host machine.
    WORKDIR /var/www/html
    COPY . ./
    
    # Use the PORT environment variable in Apache configuration files.
    # https://cloud.google.com/run/docs/reference/container-contract#port
    RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
    
    # Configure PHP for development.
    # Switch to the production php.ini for production operations.
    # RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
    # https://github.com/docker-library/docs/blob/master/php/README.md#configuration
    RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
    
  4. Adicione um arquivo .dockerignore para excluir arquivos da imagem do contêiner.

    # The .dockerignore file excludes files from the container build process.
    #
    # https://docs.docker.com/engine/reference/builder/#dockerignore-file
    
    # Exclude locally vendored dependencies.
    vendor/
    
    # Exclude "build-time" ignore files.
    .dockerignore
    .gcloudignore
    
    # Exclude git history and configuration.
    .gitignore

O app está concluído e pronto para ser implantado.

Como implantar no Cloud Run a partir da fonte

Importante: este guia de início rápido pressupõe que você tenha papéis de proprietário ou editor no projeto que está usando para este guia. Caso contrário, consulte as permissões de implantação do Cloud Run, as permissões do Cloud Build e as permissões do Artifact Registry.

Para implantar a imagem do contêiner, siga estas etapas:

  1. Implante a partir da origem usando o seguinte comando:

    gcloud run deploy

    Se for solicitada a ativação da API, responda y para ativá-la.

    1. Quando for solicitado o local do código-fonte, pressione Enter para implantar a pasta atual.

    2. Quando for solicitado o nome do serviço, pressione Enter para aceitar o nome padrão, helloworld.

    3. Se for solicitado que você ative a API Artifact Registry, responda pressionando 'y'.

    4. Quando a região for solicitada, selecione a região que preferir, por exemplo, us-central1.

    5. Você receberá uma solicitação para permitir chamadas não autenticadas: responda y.

    Aguarde alguns instantes até a conclusão da implantação. Em caso de sucesso, a linha de comando exibe o URL de serviço.

  2. Consulte o contêiner implantado abrindo o URL de serviço em um navegador da Web.

Locais do Cloud Run

O Cloud Run é regional, o que significa que a infraestrutura que executa seus serviços do Cloud Run está localizada em uma região específica e é gerenciada pelo Google para estar disponível de maneira redundante em todas as zonas da região.

Atender aos seus requisitos de latência, disponibilidade ou durabilidade são os principais fatores para selecionar a região em que seus serviços do Cloud Run são executados. Geralmente, é possível selecionar a região mais próxima de seus usuários, mas considere a localização dos outros produtos do Google Cloud usados pelo serviço do Cloud Run. O uso de produtos do Google Cloud em vários locais pode afetar a latência e o custo do serviço.

O Cloud Run está disponível nas regiões a seguir:

Sujeitas aos preços do nível 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tóquio)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlândia) Ícone de folha Baixo CO2
  • europe-west1 (Bélgica) Ícone de folha CO baixo 2
  • europe-west4 (Países Baixos)
  • us-central1 (Iowa)Ícone de folha Baixo CO2
  • us-east1 (Carolina do Sul)
  • us-east4 (Norte da Virgínia)
  • us-west1 (Oregon) Ícone de folha Baixo CO2

Sujeitas aos preços do nível 2

  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seul, Coreia do Sul)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jacarta)
  • asia-south1 (Mumbai, Índia)
  • asia-south2 (Déli, Índia)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Varsóvia, Polônia)
  • europe-west2 (Londres, Reino Unido)
  • europe-west3 (Frankfurt, Alemanha)
  • europe-west6 (Zurique, Suíça) Ícone de folha Baixo CO2
  • northamerica-northeast1 (Montreal) Ícone de folha Baixo CO2
  • northamerica-northeast2 (Toronto)
  • southamerica-east1 (São Paulo, Brasil) Ícone de folha Baixo CO2
  • us-west2 (Los Angeles)
  • us-west3 (Las Vegas)
  • us-west4 (Salt Lake City)

Se você já criou um serviço do Cloud Run, poderá ver a região no painel do Cloud Run no Console do Cloud.

Parabéns! Você acabou de implantar uma imagem de contêiner a partir do código-fonte no Cloud Run. O Cloud Run escalona de maneira automática e horizontal a imagem de contêiner para processar as solicitações recebidas e reduz o escalonamento quando a demanda diminui. Você paga apenas pela CPU, memória e rede consumidas durante o processamento da solicitação.

Limpar

Como remover seu projeto de teste

Ainda que o Cloud Run não gere custos quando o serviço não estiver em uso, é possível que receba cobranças pelo armazenamento da imagem do contêiner no Artifact Registry. É possível excluir sua imagem ou excluir seu projeto do Cloud para evitar cobranças. A exclusão do projeto do Cloud interrompe o faturamento de todos os recursos usados nesse projeto.

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir

Para mais informações sobre como criar um contêiner a partir do código-fonte e enviá-lo para um repositório, consulte: