1. Antes de começar
O Google oferece uma ferramenta eficiente de criação de imagens com que é possível criar e publicar facilmente uma imagem de contêiner Docker otimizada para apps Java em pouco tempo, sem Docker ou Dockerfile. O Google Cloud também oferece a tecnologia sem servidor para contêineres com o Cloud Run, uma plataforma de computação gerenciada que escalona automaticamente seus contêineres sem estado. Neste codelab, você vai aprender como é fácil conteinerizar seu app Kotlin do Spring Boot, publicar no Container Registry e executar a imagem no Google Cloud de maneira integrada.
Este codelab mostra como configurar um app simples em Kotlin, que demonstra o uso de serviços e ferramentas do Google Cloud, incluindo Jib, Container Registry e Cloud Run.
Pré-requisitos
- Noções básicas sobre a linguagem de programação Java e ferramentas
- Conhecimento de editores de texto padrão do Linux, como Vim, Emacs e nano
Atividades deste laboratório
- Configure um app Kotlin Spring Boot.
- Crie uma imagem Docker otimizada.
- Publique a imagem no Container Registry.
- Execute o app conteinerizado no Cloud Run.
O que é necessário
- um projeto do Google Cloud;
- Um navegador, como o Google Chrome
2. Etapas da configuração
Configuração de ambiente autoguiada
- Faça login no console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.
- Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.
A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de US$300 de avaliação sem custos.
Cloud Shell
Embora o Google Cloud possa ser operado remotamente do seu laptop, neste codelab vamos usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud.
Ativar o Cloud Shell
- No Console do Cloud, clique em Ativar o Cloud Shell
.

Se você nunca iniciou o Cloud Shell, vai ver uma tela intermediária abaixo da dobra com a descrição dele. Se esse for o caso, clique em Continuar e você não a verá novamente. Esta é a aparência dessa tela única:

Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Praticamente todo o seu trabalho neste codelab pode ser feito em um navegador ou no seu Chromebook.
Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto já estará configurado com seu ID do projeto.
- Execute o seguinte comando no Cloud Shell para confirmar que você está autenticado:
gcloud auth list
Resposta ao comando
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto:
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se o projeto não estiver configurado, configure-o usando este comando:
gcloud config set project <PROJECT_ID>
Resposta ao comando
Updated property [core/project].
3. Inicializar um app Spring Boot
- Gere um novo app Spring Boot com o Spring Initializr.
$ curl https://start.spring.io/starter.tgz \
-d language=kotlin \
-d dependencies=web \
-d baseDir=kotlin-jib-cloud-run | tar -xzvf -
O Initializr adiciona automaticamente o spring-boot-starter-web às dependências no pom.xml do app de modelo.
- Mude para o diretório do app de modelo.
$ cd kotlin-jib-cloud-run
- Crie e execute o app usando o Maven.
$ ./mvnw -DskipTests spring-boot:run
- Depois de iniciado, o app vai começar a detectar atividades na porta 8080. Clique em Visualização da Web
na barra de ferramentas do Cloud Shell e selecione Visualizar na porta 8080 para acessar o app.

- Você vai receber uma resposta 404 porque o app ainda não faz nada de útil. Interrompa o app com o
Control+C.
4. Adicionar um controlador da Web
- Crie a seguinte classe
Controllerno pacote de demonstração:
$ vi src/main/kotlin/com/example/demo/Controller.kt
or
$ nano src/main/kotlin/com/example/demo/Controller.kt
src/main/kotlin/com/example/demo/Controller.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class Controller {
@GetMapping("/")
fun saySomething(): String {
return "Kotlin app on Cloud Run, containerized by Jib!"
}
}
- Recrie e execute o app.
$ ./mvnw spring-boot:run
- Verifique o app de novo usando a Visualização da Web
. Desta vez, você vai ver a mensagem "Kotlin app on Cloud Run, containerized by Jib!". Pare o app comControl+C.
5. Colocar o app em contêiner e publicar no Container Registry
Com o Jib, é possível conteinerizar seu app de maneira otimizada sem o Docker e publicar em qualquer registro de contêiner.
- Antes de continuar, ative a API Container Registry. Isso só precisa ser feito uma vez por projeto para tornar a API acessível.
$ gcloud services enable containerregistry.googleapis.com
- Execute o Jib para criar uma imagem Docker e publicar no Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \
-Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
Por fim, você vai receber a seguinte mensagem informando que o app foi conteinerizado e enviado ao Container Registry.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
Se você encontrar um erro, verifique se $GOOGLE_CLOUD_PROJECT está definido corretamente como o ID do projeto do Google Cloud (PROJECT_ID).
- Antes de continuar, verifique se a imagem foi publicada. Volte ao console do Cloud, clique em Menu de navegação
e selecione Container Registry.


Você vai ver que a imagem foi publicada.

6. Executar o app conteinerizado no Cloud Run
O Cloud Run traz a tecnologia sem servidor para contêineres, escalonando automaticamente seus contêineres sem estado.
- Clique novamente em Menu de navegação
e selecione Cloud Run.

Se esta for a primeira vez que você acessa o Cloud Run, a caixa de diálogo a seguir vai aparecer para uma configuração única. Clique em Começar a usar o Cloud Run se essa opção aparecer.

- Na página do Cloud Run, clique em Criar serviço.

- Na próxima tela, clique em Selecionar em Origem. A origem é a imagem que você quer executar no Cloud Run.

- A caixa de diálogo vai mostrar a imagem criada anteriormente. Selecione a imagem e clique em Continuar.

- Faltam só alguns cliques para implantar o app agora. Em Plataforma de implantação, escolha Cloud Run (totalmente gerenciado) para que o serviço seja totalmente gerenciado no Google Cloud. Escolha uma região adequada para sua localização, selecione Permitir invocações não autenticadas e clique em Criar. Pronto!

Quando a imagem for totalmente implantada, a página do Cloud Run vai mostrar um URL para acessar o app. Confira!

No final, você vai ver a mensagem esperada do app.
Kotlin app on Cloud Run, containerized by Jib!
Pronto! No futuro, se você precisar implantar novas versões do app, clique em Implantar nova revisão na página.
7. Limpar
- Para limpar seu ambiente, exclua o app implantado no Cloud Run e a imagem publicada no Container Registry. Acesse o Cloud Run, selecione o app e clique em Excluir.

- Da mesma forma, acesse a página do Container Registry e exclua a imagem.

8. Parabéns
Parabéns! Você conteinerizou e implantou um app Kotlin do Spring Boot no Cloud Run.
Usando o Jib, você criou uma imagem de contêiner otimizada sem instalar o Docker ou escrever um Dockerfile e a publicou no Container Registry. O Jib otimiza a construção de imagens para que qualquer pessoa sem conhecimento aprofundado do Docker possa contentorizar apps Java com rapidez e eficiência. Depois, com alguns cliques, você implantou o app no Cloud Run para começar a veicular em pouco tempo.
Saiba mais
- Implantar um app Java no Kubernetes no Google Kubernetes Engine
- Documentação do Cloud Run
- Visão geral do Cloud Run
- Conheça melhor as imagens Java Jib-build do Docker
- Crie contêineres mais rápido com o Jib, uma ferramenta de build de imagens do Google para apps Java
- Jib: coloque seu app Java em um contêiner
- Canal do Jib no Gitter (link em inglês)
- Lista de e-mails dos usuários do Jib