Servidor Couchbase

Docker y Vaadin se encuentran con Couchbase - Parte 1

Ratnopam Chakrabarti es un desarrollador de software que trabaja actualmente para Ericsson Inc. Lleva bastante tiempo centrado en IoT, tecnologías máquina a máquina, coches conectados y dominios de ciudades inteligentes. Le encanta aprender nuevas tecnologías y ponerlas en práctica. Cuando no está trabajando, le gusta pasar tiempo con su hijo de 3 años.

Ratnopam Chakrabarti

Introducción

Ejecutar Couchbase como un contenedor Docker es bastante fácil. Simplemente hereda de la última imagen oficial de Couchbase y añade tu comportamiento personalizado de acuerdo a tus necesidades. En este post, voy a mostrar cómo se puede poner en marcha una aplicación web utilizando Spring Boot, Vaadin, y por supuesto Couchbase (como backend) - todo usando Docker.

Esta es la primera parte de una serie de dos partes donde voy a describir maneras de ejecutar una aplicación web con todas las funciones impulsado por Couchbase como el backend NoSQL utilizando conjuntos de herramientas Docker. En este post, describiré los pasos para configurar un entorno Couchbase usando Docker; también mencionaré formas de Dockerizar la aplicación web (en este caso, es una aplicación Spring Boot con Vaadin) y hablar con el backend Couchbase para las operaciones CRUD.

Requisitos previos

Docker debe estar configurado y en funcionamiento. Consulte el siguiente enlace para obtener información detallada sobre la instalación: https://docs.docker.com/engine/installation/ Si estás en macOS o Windows 10, puedes optar por los paquetes nativos de Docker. Si estás en una versión anterior de Windows (7 u 8) como yo, entonces puedes usar Docker Toolbox que viene con Docker achine.

La aplicación

La nuestra es una sencilla aplicación CRUD para mantener una librería. Los usuarios de la aplicación pueden añadir libros introduciendo información como título y/o autor, y luego pueden ver la lista de libros, editar alguna información, e incluso borrar los libros. La aplicación está construida sobre Spring Boot. El backend es alimentado por Couchbase 4.6, y para el front-end he utilizado Vaadin 7 ya que tiene una integración bastante buena con el framework Spring Boot.

A continuación se indican los principales pasos para crear esta aplicación:

  • Ejecutar y configurar Couchbase 4.6, incluyendo la configuración del cubo y los servicios utilizando Docker.
  • Construir la aplicación utilizando Spring Boot, Vaadin, y Couchbase.
  • Dockerizar y ejecutar la aplicación.

Ejecutar Couchbase 4.6 usando Docker

Comprueba la IP de tu host Docker. Usted puede utilizar:

La siguiente tarea es escribir el Dockerfile para ejecutar y configurar Couchbase. Para que nuestra aplicación hable con el backend de Couchbase, necesitamos configurar un bucket llamado "books" y también habilitar los servicios de consulta de índices en el nodo de Couchbase. El Dockerfile para todo esto se puede encontrar aquí.

El Dockerfile utiliza un script de configuración para configurar el nodo Couchbase. Couchbase ofrece puntos finales REST que pueden habilitar fácilmente servicios como consultas, N1QL e índices. También se pueden configurar buckets utilizando estas API REST. El script de configuración puede descargarse de aquí.

Intentemos ahora construir y ejecutar la imagen de Couchbase.

Vaya al directorio donde está el Dockerfile.

 

REPOSITORIO ETIQUETA IMAGEN ID CREADO TAMAÑO

chakrar27/couchbase books 93e7ba199eef hace 1 hora 581 MB

couchbase latest 337dab68d2d1 hace 9 días 581 MB

Ejecute la imagen escribiendo

Muestra de salida:

Verifique la configuración escribiendo https://192.168.99.100:8091 en tu navegador favorito.

Configuration

Escriba "Administrador" como nombre de usuario y "contraseña" en el campo Contraseña y haga clic en Iniciar sesión.

Comprueba la configuración del nodo Couchbase y verifica que está de acuerdo con el configure.sh que utilizamos anteriormente.

Couchbase Setting Cluster Ram Quota

El cubo "libros".

Data bucket settings

En este punto nuestra infraestructura back-end Couchbase está lista y funcionando. Ahora necesitamos construir una aplicación que pueda utilizar este backend para construir algo funcional.

Construir la aplicación utilizando Spring Boot, Vaadin, y Couchbase

Vaya a start.spring.io y añada Couchbase como dependencia. Esto colocaría las librerías spring-data-couchbase en el classpath de la aplicación. Dado que Couchbase se considera un ciudadano de primera clase del ecosistema Spring Boot, podemos hacer uso de la función de autoconfiguración de Spring Boot para acceder al bucket de Couchbase en tiempo de ejecución.

Además, añadir Vaadin como una dependencia en el proyecto. Vamos a utilizarlo para la construcción de la capa de interfaz de usuario.

El archivo del modelo de objetos del proyecto (pom) se encuentra en aquí.

Creamos un repositorio Couchbase así:

Las anotaciones garantizan que se proporcionará una vista denominada "book" en tiempo de ejecución para soportar consultas basadas en vistas. Se creará un índice primario para soportar consultas N1QL. Además, también se proporcionará un índice secundario.

Los métodos han sido definidos para devolver List. No tenemos que proporcionar ninguna implementación, ya que la spring-data-couchbase ya la proporciona entre bastidores.

Necesitamos definir la entidad, que en nuestro caso es Book. La anotamos con @Document.

@Documento

Para activar la configuración automática, utilice el archivo application.properties o application.yml como se muestra a continuación:

Una cosa a tener en cuenta aquí es que cuando el contenedor de la aplicación se ejecuta, necesitaría conectarse al contenedor de Couchbase y establecer la auto-configuración. La propiedad spring.couchbase.bootstrap-hosts lista la dirección IP del nodo Couchbase. Aquí, he especificado 127.0.0.1 que no va a funcionar ya que en tiempo de ejecución, el contenedor de la aplicación no encontrará el contenedor Couchbase ejecutándose en esa IP. Así que tenemos que pasar una variable de entorno (variable env) al ejecutar la imagen Docker de la aplicación.

Para pasar una variable env como se mencionó anteriormente, tenemos que escribir el Dockerfile de la aplicación de tal manera que el valor de la variable env spring.couchbase.bootstrap-hosts se puede pasar como una variable env. Aquí está el Dockerfile de la aplicación:

Como puede ver, básicamente estamos anulando el valor de la directiva spring.couchbase.bootstrap-hosts definida en el archivo application.properties por la variable env HOSTS.

Esto es prácticamente todo lo que tenemos que hacer para conectar Spring Boot con Couchbase.

UI (U e I)

Para la interfaz de usuario, utilizamos la integración spring-vaadin. Estoy usando la versión 7.7.3 de Vaadin, vaadin-spring versión 1.1.0, y "Viritin", un útil complemento de Vaadin. Para instalar Viritin, añada la siguiente dependencia:

Anote la clase UI como

@SpringUI

@Theme("valo")

public class LibreríaUI extends UI {

//////

}

Y luego enganchar los métodos del repositorio con los elementos de la UI.

Un bean que implementa el método CommandLineRunner se utiliza para prepoblar la base de datos con algunos valores iniciales.

Para obtener el código fuente completo, consulte este enlace.

Dockerizar la aplicación

Usando Maven, es muy fácil Dockerizar una aplicación usando el plugin docker-maven de Spotify. Por favor, revisa la sección de plugins del archivo pom.xml.

Alternativamente, puede construir utilizando la línea de comandos Docker ->

Y luego ejecuta la imagen -> Ten en cuenta que necesitamos pasar el valor de la variable HOSTS que nuestro contenedor de aplicaciones va a buscar cuando intente conectarse al contenedor de Couchbase. El comando de ejecución se vería así:

Una vez iniciada la aplicación, vaya a https://192.168.99.100:8080/

Aparece la siguiente página:

pasted image 0 2

Una entrada puede editarse y guardarse.

pasted image 0 1

La consulta N1QL que se ejecuta por debajo también ofrece una función de filtrado muy útil.

pasted image 0 3

Los usuarios también pueden añadir un nuevo libro y eliminar un registro existente. Todas las funcionalidades CRUD (Create/Read/Update/Delete) de esta sencilla aplicación están potenciadas por consultas N1QL de Couchbase, que habilitamos creando el "BookStoreRepository", y, a su vez, extiende el "CouchbasePagingAndSortingRepository".

 

Este post forma parte del Programa de Escritura de la Comunidad Couchbase

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Author

Posted by Laura Czajkowski

Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro boletín mensual para desarrolladores.

1 Comentarios

  1. [...] ejecutar una aplicación web Spring Boot totalmente funcional con Couchbase utilizando el conjunto de herramientas Docker. En la primera parte de la serie, demostré cómo ejecutar dos contenedores Docker para ejecutar una aplicación funcional con [...]

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.