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. 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. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Container Registry API.

    Enable the 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. 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.

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