Servidor Couchbase

Docker e Vaadin encontram o Couchbase - Parte 2

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.

Introdução

Bem-vindo à segunda parte da série em que descrevo como desenvolver e executar um aplicativo da Web do Spring Boot totalmente funcional e alimentado pelo Couchbase usando o conjunto de ferramentas do Docker. Em primeira parte da série, demonstrei como executar dois contêineres do Docker para executar um aplicativo funcional com uma interface de usuário apresentável. Os dois contêineres do Docker que estávamos executando são:

  1. A Contêiner do Couchbase com configurações pré-configuradas
  2. Um contêiner de aplicativo que se comunica com o contêiner do Couchbase (executado na etapa 1)

Embora esse método seja útil, ele não é totalmente automatizado, o que significa que a orquestração automatizada não existe. Você precisa executar dois comandos diferentes de execução do Docker para executar toda a configuração.

Existe uma maneira de criar e executar o contêiner do aplicativo que também aciona a execução do contêiner do Couchbase? É claro que existe uma maneira.

Entre no Docker Compose

Usando Docker ComposeCom o Couchbase, você pode orquestrar a execução de ambientes com vários contêineres, que é exatamente o que precisamos para o nosso caso de uso. Precisamos executar o contêiner do Couchbase primeiro e, em seguida, o contêiner do aplicativo deve ser executado e conversar com o contêiner do Couchbase.

Aqui está o arquivo docker-compose.yml para fazer isso:

Nosso aplicativo "depende" da imagem do banco de dados, que é o contêiner do Couchbase. Em outras palavras, o contêiner do Couchbase é executado primeiro e, em seguida, o contêiner do aplicativo começa a ser executado. Há um possível problema aqui: a palavra-chave "depends_on" não garante que o contêiner do Couchbase tenha terminado de configurar a imagem e iniciado a execução. Tudo o que ela garante é que o contêiner seja iniciado primeiro; ela não verifica se o contêiner está realmente em execução ou pronto para aceitar solicitações de um aplicativo. Para garantir que o contêiner do Couchbase esteja realmente em execução e que todas as etapas de pré-configuração, como a configuração da consulta, dos serviços de índice e do bucket, tenham sido concluídas, precisamos fazer uma verificação no contêiner do aplicativo.

Aqui está o Dockerfile do contêiner do aplicativo que invoca um script que, por sua vez, verifica se o bucket "books" já foi configurado ou não. Ele entra em um loop até que o bucket seja configurado e, em seguida, aciona o contêiner do aplicativo.

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

O roteiro pode ser visto em https://github.com/ratchakr/bookstoreapp/blob/master/run_app.sh

O script faz as seguintes coisas:

Ele usa o endpoint REST suportado pelo Couchbase para consultar o bucket.

O Curl é usado para chamar os pontos de extremidade REST. A instalação do curl é abordada no Dockerfile do aplicativo.

O script analisa a resposta JSON da chamada REST usando uma ferramenta chamada jq.

Se o bucket estiver configurado, ele executará o contêiner do aplicativo; caso contrário, aguardará que o bucket seja configurado primeiro.

Vale a pena mencionar que mais verificações, como verificar se o serviço de índice e o serviço de consulta estão configurados corretamente ou não, podem ser adicionadas ao script de shell para torná-lo mais robusto. Uma palavra de cautela é confirmar seu caso de uso e requisito específico antes de seguir a abordagem docker-compose; não há uma maneira infalível de determinar se o contêiner do banco de dados do Couchbase está totalmente em funcionamento e pronto para atender às solicitações do aplicativo cliente. Algumas das abordagens que podem funcionar são as seguintes:

  1. Se você tiver um bucket pré-configurado, poderá testar se o bucket existe
  2. Verifique se os índices estão no lugar
  3. Se você souber a contagem de registros em um bucket (digamos, para um arquivo .csv que foi importado para um bucket no momento do carregamento inicial dos dados), poderá verificar se a contagem corresponde ao número de registros no arquivo .csv). Para o nosso caso de uso, o mencionado acima funciona muito bem.

Criar e executar

Agora que temos o arquivo docker-compose e o Dockerfile, podemos criar a imagem do aplicativo usando o simples comando docker-compose up comando.

Aqui está o trecho de saída do console do Docker:

Neste ponto, nosso aplicativo está em funcionamento com um único comando de orquestração docker-compose.

Tipo 192.168.99.100:8080 no navegador; você deverá ver a tela a seguir:

pasted image 0 12

O Docker Compose é uma boa maneira de orquestrar ambientes Docker com vários contêineres. Ele tem cadeias de comando quase semelhantes aos conjuntos de comandos do "docker". Por exemplo, para ver uma lista de contêineres em execução, basta digitar:

docker-compose ps > que lhe daria

O nome dos contêineres é mostrado em negrito aqui.

Se você precisar interromper ou derrubar seu ambiente orquestrado com o Docker Compose, poderá fazer isso com o comando docker-compose down conforme mostrado abaixo:

Uma execução de amostra produz:

Agora, se você fizer um docker-compose ps, ele mostrará que nenhum contêiner está em execução no momento.

Também é possível usar o Docker compose para um ambiente de teste automatizado, no qual você aciona os contêineres do Docker, executa os testes e, em seguida, desmonta a infraestrutura completa, tudo com o Compose. Para obter uma visão geral detalhada do Docker compose, visite o site site oficial.

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

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Laura Czajkowski

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

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.