Ratnopam Chakrabarti é um desenvolvedor de software que trabalha atualmente para a Ericsson Inc. Ele tem se concentrado em IoT, tecnologias máquina a máquina, carros conectados e domínios de cidades inteligentes por um bom tempo. Ele adora aprender novas tecnologias e colocá-las em prática. Quando não está trabalhando, gosta de passar o tempo com seu filho de 3 anos.

Ratnopam Chakrabarti

Introdução

Executar o Couchbase como um contêiner do Docker é bastante fácil. Basta herdar a imagem oficial mais recente do Couchbase e adicionar seu comportamento personalizado de acordo com suas necessidades. Nesta postagem, mostrarei como você pode iniciar um aplicativo Web usando o Spring Boot, o Vaadin e, é claro, o Couchbase (como backend), tudo isso usando o Docker.

Esta é a primeira parte de uma série de duas partes em que descreverei maneiras de executar um aplicativo da Web com todos os recursos do Couchbase como backend NoSQL usando conjuntos de ferramentas do Docker. Nesta postagem, descreverei as etapas para instalar e configurar um ambiente Couchbase usando o Docker; também mencionarei maneiras de Dockerizar o aplicativo Web (neste caso, é um aplicativo Spring Boot com Vaadin) e conversar com o backend do Couchbase para as operações CRUD.

Pré-requisitos

O Docker precisa estar configurado e funcionando. Consulte o link a seguir para obter detalhes sobre a instalação: https://docs.docker.com/engine/installation/ Se você estiver no macOS ou no Windows 10, poderá optar por pacotes nativos do Docker. Se você estiver em uma versão anterior do Windows (7 ou 8), como eu, poderá usar o Docker Toolbox, que vem com o Docker Achine.

O aplicativo

O nosso é um aplicativo CRUD simples para manter uma livraria. Os usuários do aplicativo podem adicionar livros inserindo informações como título e/ou autor e, em seguida, podem visualizar a lista de livros, editar algumas informações e até mesmo excluir os livros. O aplicativo foi desenvolvido com base no Spring Boot. O back-end é alimentado pelo Couchbase 4.6 e, para o front-end, usei o Vaadin 7, pois ele tem uma integração muito boa com a estrutura do Spring Boot.

As principais etapas para criar esse aplicativo estão listadas abaixo:

  • Executar e configurar o Couchbase 4.6, incluindo a configuração do bucket e dos serviços usando o Docker.
  • Crie o aplicativo usando o Spring Boot, o Vaadin e o Couchbase.
  • Dockerize e execute o aplicativo.

Executar o Couchbase 4.6 usando o Docker

Verifique o IP do host do Docker. Você pode usar:

A próxima tarefa é escrever o Dockerfile para executar e configurar o Couchbase. Para que nosso aplicativo se comunique com o backend do Couchbase, precisamos configurar um bucket chamado "books" e também habilitar os serviços de consulta de índice no nó do Couchbase. O Dockerfile para tudo isso pode ser encontrado aqui.

O Dockerfile usa um script de configuração para configurar o nó do Couchbase. O Couchbase oferece pontos de extremidade REST que podem facilmente habilitar serviços como consulta, N1QL e índice. Também é possível configurar buckets usando essas APIs REST. O script de configuração pode ser baixado de aqui.

Vamos tentar criar e executar a imagem do Couchbase agora.

Vá para o diretório onde está o Dockerfile.

 

REPOSITÓRIO TAG IMAGE ID CREATED SIZE

chakrar27/couchbase books 93e7ba199eef 1 hora atrás 581 MB

couchbase latest 337dab68d2d1 9 dias atrás 581 MB

Execute a imagem digitando

Saída de amostra:

Verifique a configuração digitando http://192.168.99.100:8091 em seu navegador favorito.

Configuration

Digite "Administrator" como nome de usuário e "password" no campo Password e clique em Sign In.

Verifique as configurações do nó do Couchbase e verifique se elas estão de acordo com o configure.sh que usamos acima.

Couchbase Setting Cluster Ram Quota

O balde "livros".

Data bucket settings

Neste ponto, nossa infraestrutura de back-end do Couchbase está funcionando. Agora precisamos criar um aplicativo que possa usar esse backend para criar algo funcional.

Criar o aplicativo usando o Spring Boot, o Vaadin e o Couchbase

Vá para start.spring.io e adicione o Couchbase como uma dependência. Isso colocaria as bibliotecas spring-data-couchbase no classpath do aplicativo. Como o Couchbase é considerado um cidadão de primeira classe do ecossistema do Spring Boot, podemos usar o recurso de configuração automática do Spring Boot para acessar o bucket do Couchbase em tempo de execução.

Além disso, adicione o Vaadin como uma dependência no projeto. Vamos usá-lo para criar a camada de interface do usuário.

O arquivo de modelo de objeto de projeto (pom) pode ser encontrado aqui.

Criamos um repositório do Couchbase como este:

As anotações garantem que uma visualização chamada "book" será fornecida em tempo de execução para dar suporte a consultas baseadas em visualização. Um índice primário será criado para dar suporte a consultas N1QL. Além disso, um índice secundário também será fornecido.

Os métodos foram definidos para retornar List. Não precisamos fornecer nenhuma implementação, pois isso já é fornecido nos bastidores pelo spring-data-couchbase.

Precisamos definir a entidade, que, no nosso caso, é o livro. Nós a anotamos com @Document.

@Documento

Para ativar a configuração automática, use o arquivo application.properties ou application.yml, conforme mostrado abaixo:

Um aspecto a ser observado aqui é que, quando o contêiner do aplicativo for executado, ele precisará se conectar ao contêiner do Couchbase e definir a configuração automática. A propriedade spring.couchbase.bootstrap-hosts lista o endereço IP do nó do Couchbase. Aqui, especifiquei 127.0.0.1, o que não funcionará, pois, no tempo de execução, o contêiner do aplicativo não encontrará o contêiner do Couchbase em execução nesse IP. Portanto, precisamos passar uma variável de ambiente (variável env) ao executar a imagem do Docker do aplicativo.

Para passar uma variável env conforme mencionado acima, precisamos escrever o Dockerfile do aplicativo de modo que o valor da variável spring.couchbase.bootstrap-hosts pode ser passada como uma variável env. Aqui está o Dockerfile do aplicativo:

Como você pode ver, estamos basicamente substituindo o valor da variável spring.couchbase.bootstrap-hosts definida no arquivo application.properties pela variável env HOSTS.

Isso é praticamente tudo o que precisamos fazer para conectar o Spring Boot ao Couchbase.

UI (U e I)

Para a interface do usuário, usamos a integração spring-vaadin. Estou usando a versão 7.7.3 do Vaadin, o vaadin-spring versão 1.1.0 e o "Viritin", um complemento útil do Vaadin. Para instalar o Viritin, adicione a seguinte dependência:

Anote a classe UI como

@SpringUI

@Theme("valo")

public class BookstoreUI extends UI {

//////

}

Em seguida, conecte os métodos do repositório com os elementos da interface do usuário.

Um bean que implementa o CommandLineRunner é usada para preencher previamente o banco de dados com alguns valores iniciais.

Para obter o código-fonte completo, consulte este link.

Dockerize o aplicativo

Usando o Maven, é muito fácil Dockerizar um aplicativo usando o plug-in docker-maven do Spotify. Verifique a seção do plug-in do arquivo pom.xml.

Como alternativa, você pode criar usando a linha de comando do Docker ->

E, em seguida, execute a imagem -> Observe que precisamos passar o valor da variável HOSTS que o nosso contêiner de aplicativo procurará quando tentar se conectar ao contêiner do Couchbase. O comando de execução seria semelhante a:

Quando o aplicativo for iniciado, navegue até http://192.168.99.100:8080/

A página a seguir é exibida:

pasted image 0 2

Uma entrada pode ser editada e salva.

pasted image 0 1

Há também um recurso de filtragem interessante fornecido pela consulta N1QL executada abaixo.

pasted image 0 3

Os usuários também podem adicionar um novo livro e excluir um registro existente. Todos os recursos CRUD (Create/Read/Update/Delete) desse aplicativo simples são alimentados por consultas N1QL do Couchbase, que ativamos criando o "BookStoreRepository" e, por sua vez, estende o "CouchbasePagingAndSortingRepository".

 

Esta postagem faz parte do Programa de Redação da Comunidade Couchbase

Autor

Postado por Laura Czajkowski, gerente da comunidade de desenvolvedores, Couchbase

Laura Czajkowski é a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela é responsável pelo nosso boletim informativo mensal para desenvolvedores.

Um comentário

  1. [...] executar um aplicativo da Web do Spring Boot totalmente funcional e alimentado pelo Couchbase usando o conjunto de ferramentas do Docker. Na primeira parte da série, demonstrei como executar dois contêineres do Docker para executar um aplicativo funcional com [...]

Deixar uma resposta