Como criar contêineres Java com Jib

O Jib cria contêineres sem usar um Dockerfile ou exigir uma instalação do Docker (links em inglês). Você pode usar o Jib nos plug-ins do Jib para Maven ou Gradle ou usar a biblioteca Java do Jib (conteúdo das páginas em inglês).

O que o Jib faz?

O Jib lida com todas as etapas de empacotamento do aplicativo em uma imagem de contêiner. Você não precisa saber as práticas recomendadas para criar Dockerfiles ou ter o Docker instalado.

Fluxo de criação do Docker:

Diagrama mostrando os estágios do projeto ao
       Container Registry usando o Docker.

Fluxo de criação do Jib:

Diagrama que mostra estágios não intermediários do projeto para o Container Registry usando o Jib.

O Jib organiza seu aplicativo em camadas distintas, dependências, recursos e classes. Ele utiliza o cache da camada de imagem do Docker para manter as criações rápidas apenas pela recriação de alterações. A organização da camada de Jib e a pequena imagem de base mantêm o tamanho geral da imagem pequeno, o que melhora o desempenho e a portabilidade.

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 a cobrança está ativada para o seu projeto do Google Cloud.

  4. 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

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Ative a API Container Registry.

    Ative a API

  7. Se você não tem o Java, faça o download, a instalação e a configuração dele.
  8. Instale o Maven 3.5 ou mais recente.
  9. Instale e inicialize a CLI do Google Cloud.
  10. Autentique-se no Container Registry usando a CLI do Google Cloud como um auxiliar de credencial do Docker:
    gcloud auth configure-docker
    Opcionalmente, consulte a documentação de configuração do Jib para ver outras formas de autenticação.

Como criar usando o Jib

  1. Selecione um projeto atual e navegue até a pasta de origem ou clone a amostra com o seguinte comando:

         git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
         cd java-docs-samples/run/helloworld

  2. Adicione o plug-in ao seu pom.xml:

    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>jib-maven-plugin</artifactId>
      <version>2.8.0</version>
      <configuration>
        <to>
          <image>gcr.io/PROJECT/IMAGE</image>
        </to>
      </configuration>
    </plugin>
    

    Replace

    • PROJECT pelo ID de projeto do Google Cloud;
    • IMAGE pelo nome da sua imagem;

    Se você não quiser modificar o pom.xml, use o comando:

        mvn compile com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
            -Dimage=gcr.io/PROJECT/IMAGE
  3. Crie e envie a imagem para um registro de contêiner:

    mvn compile jib:build

    É possível verificar o sucesso visualizando seu contêiner no Container Registry.

    Opcionalmente, se o Docker estiver instalado, você poderá criar para a instalação local do Docker para inspecionar ou executar a imagem como qualquer outro contêiner local:

    mvn compile jib:dockerBuild

Personalizações adicionais

É possível personalizar os builds do Jib de maneira semelhante aos Dockerfiles, como adicionando variáveis de ambiente e selecionando uma imagem de base.

Adicionar variáveis de ambiente

É possível adicionar variáveis de ambiente à sua compilação de maneira semelhante à instrução ENV em um Dockerfile, da seguinte maneira:

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>jib-maven-plugin</artifactId>
  <version>2.8.0</version>
  <configuration>
    <to>
      <image>gcr.io/PROJECT/IMAGE</image>
    </to>
    <container>
      <environment>
        <ENV_VAR>VALUE</ENV_VAR>
      </environment>
    </container>
  </configuration>
</plugin>

Replace

  • PROJECT pelo ID de projeto do Google Cloud;
  • IMAGE pelo nome da sua imagem;
  • ENV_VAR com NAME.
  • VALUE pelo valor desejado.

Agora seu aplicativo responderá com Hello <var>VALUE</var>!

Alterar a imagem base

A imagem base é equivalente às instruções FROM em um Dockerfile. A imagem de base pode ser atualizada alterando o campo from.image.

Se você quiser incluir um shell para depuração, defina a imagem base como alpine:3 ou openjdk:VERSION (se o Java for necessário).

Para adicionar pacotes do sistema, você precisará criar uma imagem de base com esses pacotes instalados. Consulte Como criar contêineres para mais informações.

  <plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.8.0</version>
    <configuration>
      <from>
        <image>gcr.io/PROJECT/BASE_IMAGE</image>
      </from>
      <to>
        <image>gcr.io/PROJECT/IMAGE_NAME</image>
      </to>
    </configuration>
  </plugin>

Tente atualizar o campo from.image para outra imagem base Java, como openjdk:8-alpine.

Como personalizar outros aspectos do Java

O Jib é compatível com configurações de tempo de execução do Java necessárias para executar seu aplicativo. Para mais personalizações, consulte Uso prolongado (em inglês).

Como enviar o código

Como configurar padrões do gcloud

Para configurar a gcloud com os padrões do serviço do Cloud Run, realize as etapas a seguir:

  1. Defina seu projeto padrão:

    gcloud config set project PROJECT_ID

    Substitua PROJECT_ID pelo nome do projeto que você criou para este tutorial.

  2. Configure a gcloud para a região escolhida:

    gcloud config set run/region REGION

    Substitua REGION pela região compatível do Cloud Run.

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 CO
  • europe-west1 (Bélgica) Ícone de folha Baixo CO
  • 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 CO
  • northamerica-northeast1 (Montreal) Ícone de folha Baixo nível de CO2
  • northamerica-northeast2 (Toronto) Ícone de folha Baixo CO2
  • southamerica-east1 (São Paulo, Brasil) Ícone de folha Baixo CO2
  • southamerica-west1 (Santiago, Chile)
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

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

fazer a implantação no Cloud Run.

Implantar o contêiner do Container Registry usando a CLI gcloud no Cloud Run ou no Cloud Run for Anthos.

Implante a imagem do contêiner usando o seguinte comando:

gcloud run deploy SERVICE-NAME \
    --image gcr.io/PROJECT/IMAGE \
    --platform managed

Replace

  • SERVICE-NAME pelo nome de serviço escolhido.
  • PROJECT pelo ID de projeto do Google Cloud;
  • IMAGE pelo nome da sua imagem;

Observe que a imagem do contêiner é implantada no serviço e na região (Cloud Run) ou no cluster (Cloud Run para Anthos no Google Cloud) que você configurou anteriormente em Como configurar o gcloud.

Se estiver implantando no Cloud Run, você será solicitado a permitir invocações não autenticadas. Se você quiser acesso imediato ao seu serviço, responda y, "Sim" ao prompt "permitir não autenticado". Se o serviço for particular e as solicitações precisarem incluir autenticação, responda n, "Não" ao prompt "permitir não autenticado".

Se o serviço for público, use o URL exibido após uma implantação bem-sucedida para visitar seu contêiner implantado. Se seu serviço for privado, use o seguinte comando curl para invocar seu serviço:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

Se implantado no Cloud Run para Anthos, consulte Como acessar o serviço implantado.

Limpar

Se você criou um novo projeto para este tutorial, exclua o projeto. Se você usou um projeto atual e quer mantê-lo sem as alterações incluídas neste tutorial, exclua os recursos criados para o tutorial.

Como excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Google 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.

Como excluir recursos do tutorial

  1. Exclua o serviço do Cloud Run que você implantou neste tutorial:

    gcloud run services delete SERVICE-NAME

    SERVICE-NAME é o nome escolhido do serviço.

    Também é possível excluir os serviços do Cloud Run no Console do Google Cloud.

  2. Remova a configuração da região padrão da gcloud que você adicionou durante a configuração do tutorial:

     gcloud config unset run/region
    
  3. Remova a configuração do projeto:

     gcloud config unset project
    

A seguir