Início rápido: crie e implemente uma app Web Ruby no Cloud Run

Saiba como usar um único comando para criar e implementar uma aplicação Web "Hello World" a partir de um exemplo de código para Google Cloud usar o Cloud Run.

Seguindo os passos neste início rápido, o Cloud Run cria automaticamente um Dockerfile para si quando implementa a partir do código-fonte.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.

  5. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the Google Cloud CLI.

  10. Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro, tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Para definir o projeto predefinido para o seu serviço do Cloud Run:
     gcloud config set project PROJECT_ID
    Substitua PROJECT_ID pelo seu Google Cloud ID do projeto.
  13. Se estiver ao abrigo de uma política da organização de restrição de domínio que restringe as invocações não autenticadas para o seu projeto, tem de aceder ao serviço implementado conforme descrito em Testar serviços privados.

  14. Ative a API Cloud Run Admin e a API Cloud Build:

    gcloud services enable run.googleapis.com \
        cloudbuild.googleapis.com

    Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.

  15. Conceda à conta de serviço do Cloud Build a seguinte função do IAM.

    Clique para ver as funções necessárias para a conta de serviço do Cloud Build

    O Cloud Build usa automaticamente a conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função Cloud Run Builder (roles/run.builder) à conta de serviço predefinida do Compute Engine no seu projeto:

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
          --role=roles/run.builder
      

    Substitua PROJECT_NUMBER pelo seu Google Cloud número do projeto e PROJECT_ID pelo seu Google Cloud ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte o artigo Criar e gerir projetos.

    A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.

  16. Escreva a aplicação de amostra

    Para escrever uma aplicação Ruby:

    1. Crie um novo diretório com o nome helloworld e altere o diretório para:

      mkdir helloworld
      cd helloworld
      
    2. Crie um ficheiro com o nome app.rb e cole o seguinte código no mesmo:

      require "sinatra"
      
      set :bind, "0.0.0.0"
      port = ENV["PORT"] || "8080"
      set :port, port
      
      get "/" do
        name = ENV["NAME"] || "World"
        "Hello #{name}!"
      end

      Este código cria um servidor Web básico que escuta na porta definida pela variável de ambiente PORT.

    3. Crie um nome de ficheiroGemfile e copie o seguinte para o mesmo:

      source "https://rubygems.org"
      
      gem "sinatra", "~>3.1"
      gem "thin"
      
      group :test do
        gem "rack-test"
        gem "rest-client"
        gem "rspec"
        gem "rspec_junit_formatter"
        gem "rspec-retry"
        gem "rubysl-securerandom"
      end
      
      gem "puma", "~> 6.6"
      gem "rackup", "~> 1.0"
      
    4. Se não tiver o Bundler 2.0 ou superior instalado, instale o Bundler.

    5. Gere um ficheiro Gemfile.lock executando o seguinte comando:

      bundle install

    6. Crie um novo ficheiro denominado Dockerfile no mesmo diretório que os ficheiros de origem:

      
      # Use the official Ruby image.
      # https://hub.docker.com/_/ruby
      FROM ruby:3.4
      
      # Install production dependencies.
      WORKDIR /usr/src/app
      COPY Gemfile Gemfile.lock ./
      ENV BUNDLE_FROZEN=true
      RUN gem install bundler && bundle config set --local without 'test'
      
      # Copy local code to the container image.
      COPY . ./
      RUN bundle install
      
      # Run the web service on container startup.
      CMD ["ruby", "./app.rb"]
      
    7. Adicione um ficheiro .dockerignore para excluir ficheiros da imagem do contentor.

      Dockerfile
      README.md
      .ruby-version
      .bundle/
      vendor/
      

    A sua app está concluída e pronta para ser implementada.

    Implemente no Cloud Run a partir da origem

    Importante: este início rápido pressupõe que tem funções de proprietário ou editor no projeto que está a usar para o início rápido. Caso contrário, consulte a função de programador de origem do Cloud Run para ver as autorizações necessárias para implementar um recurso do Cloud Run a partir da origem.

    A implementação a partir da origem cria automaticamente uma imagem de contentor a partir do código-fonte e implementa-a.

    Para implementar a partir da origem:

    1. No diretório do código-fonte, implemente a pasta atual através do seguinte comando:

      gcloud run deploy --source .
      1. Quando lhe for pedido o nome do serviço, prima Enter para aceitar o nome predefinido, por exemplo, helloworld.

      2. Se lhe for pedido que ative APIs adicionais no projeto, por exemplo, a API Artifact Registry, responda premindo y.

      3. Quando lhe for pedido para indicar a região: selecione a região da sua escolha, por exemplo, europe-west1.

      4. Se lhe for pedido que crie um repositório na região especificada, responda premindo y.

      5. Se lhe for pedido que permita o acesso público: responda y. Pode não ver este pedido se existir uma política organizacional de restrição de domínio que o impeça. Para mais detalhes, consulte a secção Antes de começar.

      Em seguida, aguarde alguns momentos até que a implementação esteja concluída. Se tiver êxito, a linha de comandos apresenta o URL do serviço.

    2. Visite o serviço implementado abrindo o URL do serviço num navegador de Internet.

    Localizações do Cloud Run

    O Cloud Run é regional, o que significa que a infraestrutura que executa os seus serviços do Cloud Run está localizada numa região específica e é gerida pela Google para estar disponível de forma redundante em todas as zonas dessa região.

    O cumprimento dos requisitos de latência, disponibilidade ou durabilidade são fatores principais para selecionar a região onde os seus serviços do Cloud Run são executados. Geralmente, pode selecionar a região mais próxima dos seus utilizadores, mas deve considerar a localização dos outros Google Cloudprodutos usados pelo seu serviço do Cloud Run. A utilização Google Cloud de produtos em conjunto em várias localizações pode afetar a latência do seu serviço, bem como o custo.

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

    Sujeito aos preços de Nível 1

    • asia-east1 (Taiwan)
    • asia-northeast1 (Tóquio)
    • asia-northeast2 (Osaca)
    • asia-south1 (Mumbai, Índia)
    • europe-north1 (Finlândia) ícone de folha Baixo CO2
    • europe-north2 (Estocolmo) ícone de folha Baixo CO2
    • europe-southwest1 (Madrid) ícone de folha Baixo CO2
    • europe-west1 (Bélgica) ícone de folha Baixo CO2
    • europe-west4 (Países Baixos) ícone de folha Baixo CO2
    • europe-west8 (Milão)
    • europe-west9 (Paris) ícone de folha Baixo CO2
    • me-west1 (Telavive)
    • northamerica-south1 (México)
    • us-central1 (Iowa) ícone de folha Baixo CO2
    • us-east1 (Carolina do Sul)
    • us-east4 (Virgínia do Norte)
    • us-east5 (Columbus)
    • us-south1 (Dallas) ícone de folha Baixo CO2
    • us-west1 (Oregão) ícone de folha Baixo CO2

    Sujeito aos preços de Nível 2

    • africa-south1 (Joanesburgo)
    • asia-east2 (Hong Kong)
    • asia-northeast3 (Seul, Coreia do Sul)
    • asia-southeast1 (Singapura)
    • asia-southeast2 (Jacarta)
    • asia-south2 (Deli, Índia)
    • australia-southeast1 (Sydney)
    • australia-southeast2 (Melbourne)
    • europe-central2 (Varsóvia, Polónia)
    • europe-west10 (Berlim) ícone de folha Baixo CO2
    • europe-west12 (Turim)
    • europe-west2 (Londres, Reino Unido) ícone de folha Baixo CO2
    • europe-west3 (Frankfurt, Alemanha)
    • europe-west6 (Zurique, Suíça) ícone de folha Baixo CO2
    • me-central1 (Doha)
    • me-central2 (Dammam)
    • northamerica-northeast1 (Montreal) ícone de folha Baixo CO2
    • northamerica-northeast2 (Toronto) ícone de folha Baixo CO2
    • southamerica-east1 (São Paulo, Brasil) ícone de folha Baixo CO2
    • southamerica-west1 (Santiago, Chile) ícone de folha Baixo CO2
    • us-west2 (Los Angeles)
    • us-west3 (Salt Lake City)
    • us-west4 (Las Vegas)

    Se já criou um serviço do Cloud Run, pode ver a região no painel de controlo do Cloud Run na Google Cloud consola.

    Limpar

    Remova o projeto de teste

    Embora o Cloud Run não cobre quando o serviço não está em utilização, ainda pode ser-lhe cobrado o armazenamento da imagem do contentor no Artifact Registry. Pode eliminar a imagem do contentor ou eliminar o Google Cloud projeto para evitar incorrer em custos. A eliminação do seu Google Cloud projeto interrompe a faturação de todos os recursos usados nesse projeto.

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    O que se segue?

    Para mais informações sobre a criação de um contentor a partir do código-fonte e o envio para um repositório, consulte: