Servidor Couchbase

Docker y Vaadin se encuentran con Couchbase - Parte 2

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.

Introducción

Bienvenido a la segunda parte de la serie en la que describo cómo desarrollar y ejecutar una aplicación web Spring Boot totalmente funcional y potenciada por Couchbase utilizando el conjunto de herramientas Docker. En primera parte de la serie, demostré cómo ejecutar dos contenedores Docker para ejecutar una aplicación funcional con una interfaz de usuario presentable. Los dos contenedores Docker que estábamos ejecutando son:

  1. A Contenedor Couchbase con ajustes preconfigurados
  2. Un contenedor de aplicación hablando con el contenedor Couchbase (Ejecutado en el paso 1)

Aunque este método es útil, no está totalmente automatizado, es decir, no existe la orquestación automatizada. Tienes que ejecutar dos comandos de ejecución de Docker diferentes para ejecutar toda la configuración.

¿Hay alguna forma de construir y ejecutar el contenedor de la aplicación que también active la ejecución del contenedor de Couchbase? Por supuesto que hay una manera.

Entrar en Docker Compose

Utilizando Docker Composepuedes orquestar la ejecución de entornos multicontenedor, que es exactamente lo que necesitamos para nuestro caso de uso. Necesitamos ejecutar el contenedor Couchbase primero, y luego el contenedor de la aplicación debe ejecutarse y hablar con el contenedor Couchbase.

Aquí está el archivo docker-compose.yml para lograr esto:

Nuestra app "depende_de" la imagen db que es el contenedor Couchbase. En otras palabras, el contenedor Couchbase se ejecuta primero y luego el contenedor de la aplicación. Hay un problema potencial aquí: la palabra clave "depends_on" no garantiza que el contenedor Couchbase haya terminado de configurar la imagen y haya empezado a ejecutarse. Todo lo que asegura es que el contenedor se inicie primero; no comprueba si el contenedor está realmente ejecutándose o listo para aceptar peticiones de una aplicación. Para asegurarnos de que el contenedor de Couchbase se está ejecutando y que todos los pasos de preconfiguración, como la configuración de la consulta, los servicios de índice y el bucket, se han completado, necesitamos hacer una comprobación desde el contenedor de la aplicación.

Este es el Dockerfile del contenedor de la aplicación que invoca un script que, a su vez, comprueba si el bucket "books" ya ha sido configurado o no. Entra en un bucle hasta que el bucket está configurado y entonces activa el contenedor de la aplicación.

https://github.com/ratchakr/bookstoreapp/blob/master/Dockerfile-v1

El guión puede verse en https://github.com/ratchakr/bookstoreapp/blob/master/run_app.sh

El script hace lo siguiente

Utiliza el endpoint REST soportado por Couchbase para consultar el bucket.

Curl se utiliza para llamar a los puntos finales REST. La instalación de curl está cubierta en el Dockerfile de la aplicación.

El script analiza la respuesta JSON de la llamada REST utilizando una herramienta llamada jq.

Si el cubo está configurado, ejecuta el contenedor de aplicaciones; de lo contrario, espera a que el cubo se configure primero.

Vale la pena mencionar que se pueden añadir más comprobaciones, como verificar si el servicio de índice y el servicio de consulta están configurados correctamente o no, en el script de shell para hacerlo más robusto. Una palabra de precaución es confirmar tu caso de uso particular y los requisitos antes de seguir el enfoque docker-compose; no hay una manera segura de determinar si el contenedor db Couchbase está completamente en marcha y listo para servir peticiones de la aplicación cliente. Algunos de los enfoques que podrían funcionar son los siguientes:

  1. Si dispone de un bucket preconfigurado, puede comprobar si el bucket existe
  2. Compruebe si los índices están en su sitio
  3. Si conoce el recuento de registros de un bucket (digamos que de un archivo .csv que se ha importado a un bucket en el momento de la carga inicial de datos), puede comprobar si el recuento coincide con el número de registros del archivo .csv). Para nuestro caso de uso, el mencionado anteriormente funciona bien.

Construir y ejecutar

Ahora que tenemos nuestro archivo docker-compose y Dockerfile, podemos construir la imagen de la aplicación mediante el simple comando docker-compose up mando.

Aquí está el fragmento de salida de la consola Docker:

En este punto, nuestra aplicación está en funcionamiento con un único comando de orquestación docker-compose.

Tipo 192.168.99.100:8080 en el navegador; debería ver la siguiente pantalla:

pasted image 0 12

Docker Compose es una buena forma de orquestar entornos Docker multicontenedor. Tiene cadenas de comandos casi similares a los conjuntos de comandos "docker". Por ejemplo, para ver una lista de contenedores en ejecución, simplemente escriba:

docker-compose ps > que le daría

Los nombres de los contenedores aparecen aquí en negrita.

Si necesita detener o desmantelar su entorno orquestado con Docker Compose, puede hacerlo con el comando docker-compose down como se muestra a continuación:

Una ejecución de muestra produce:

Ahora, si haces un docker-compose ps, muestra que ningún contenedor se está ejecutando actualmente.

También puede utilizar Docker compose para un entorno de pruebas automatizado en el que se encienden los contenedores Docker, se ejecutan las pruebas y, a continuación, se desmonta toda la infraestructura, todo ello con Compose. Para obtener una descripción detallada de Docker compose, visite la página sitio web oficial.

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.

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.