Rafael Ugolini é um desenvolvedor de software full stack atualmente baseado em Bruxelas, na Bélgica. Ele trabalha com desenvolvimento de software há mais de 10 anos e, ultimamente, tem se concentrado em projetar soluções para a web e desenvolvimento usando Python e JavaScript. Rafael Ugolini é desenvolvedor de software sênior da Famoco.

FullSizeRender

Introdução

O Docker é um projeto excelente que está ajudando os desenvolvedores de todo o mundo a executar aplicativos em contêineres. Isso não só ajuda a enviar software mais rapidamente, mas também resulta na famosa frase "funciona na minha máquina". Neste artigo, explicarei como criar uma imagem modular do Couchbase que não requer nenhuma interação com a interface do usuário da Web para ter um banco de dados pronto para uso para você.

Todo o código está disponível online aqui.

Dockerfile

A primeira etapa é criar o Dockerfile.

Versão do Couchbase

Este exemplo é baseado no Couchbase Server Enterprise 4.6.1, mas você pode mudar para a versão específica que está executando em seu ambiente.

Configuração da memória

Todos os valores aqui estão em MB:

- MEMORY_QUOTA: cota de RAM do serviço de dados por nó

- INDEX_MEMORY_QUOTA: cota de memória ram do serviço de índice por nó

- FTS_MEMORY_QUOTA: cota de memória ram do serviço de índice por nó

Serviços

Esses são os serviços que estarão disponíveis para o nó criado:

- kv: Dados

- n1ql: Consulta

- índice: Índice

- fts: Pesquisa de texto completo

Credenciais

Nome de usuário e senha a serem usados no Couchbase Server.

Opções de cluster

Essas opções são usadas somente se você quiser adicionar mais de um nó no cluster.

- CLUSTER_HOST: nome do host do cluster ao qual esse nó deve se juntar

- CLUSTER_REBALANCE: defina "true" se quiser que o cluster seja reequilibrado depois que o nó for associado

Ponto de entrada

A imagem do Couchbase Server já vem com um script entrypoint.sh e não queremos substituí-lo. O truque aqui é copiar a nossa versão do entrypoint.sh para /config-entrypoint.sh, executar o entrypoint.sh do Couchbase Server em segundo plano e, depois de configurar o nó, anexar o script de volta ao original PONTO DE ENTRADA.

Ponto de entrada

O PONTO DE ENTRADA é usado em combinação com o script original da imagem do Couchbase Server. Vamos examinar linha por linha para entender como ele funciona.

Inicializar o servidor Couchbase

Primeiro, usamos set -m para ativar o controle de trabalho, o processo em execução em segundo plano (como o PONTO DE ENTRADA) são executados em um grupo de processos separado. Essa opção é desativada por padrão no modo não interativo, como scripts.

Funções utilitárias

Essa função é usada para verificar quando o Couchbase Server começa a responder às chamadas HTTP.

Essa é apenas uma função utilitária, adicione um número antes de qualquer eco no script para contar as etapas realizadas automaticamente.

Para analisar a saída dos nós na API do Couchbase Server, estou usando uma função que executa o ython para ler STDINtransformá-lo em JSON e nos nós do Couchbase. Isso é usado para rebalanceamento.

Configurar o nó

A primeira etapa é aguardar até que o servidor esteja pronto e, em seguida, usar a função numbered_echo você pode ver quanto tempo levou para o Couchbase Server ter as chamadas de API disponíveis.

Em seguida, definimos uma variável HOSTNAME para ser usado em todas as chamadas de API que fazemos e também redefinimos o contador de numbered_echo definindo-o como 1.

 

A primeira coisa a fazer é definir a configuração do armazenamento em disco e, em seguida, definir o nome do host.

Ingressar em um cluster

Se CLUSTER_HOST estiver definido, o script tentará adicionar o contêiner para o cluster.

Depois de adicionar o nó ao cluster, o script também pode verificar a variável REBALANCEAMENTO DE CLUSTER para ver se ele precisa reequilibrar o cluster automaticamente. É aqui que usamos a função Python para ler os nós de /pools/default ponto final.

Não ingressar em um cluster

Configurações de memória para os serviços.

Serviços a serem usados pelo nó.

Configure as credenciais para o nó.

Finalizar

Para finalizar o script, nós o anexamos ao script original PONTO DE ENTRADA.

Exemplo

Para demonstrar como usá-lo, usarei a imagem registrada em Docker Hub com o código aqui.

Nó único

 

Isso executa um único nó usando a memória mínima necessária e as credenciais padrão (Administrador/senha) registrados na imagem. Todas as portas de rede Servidor Couchbase Os usos também são expostos.

O comando acima brinca um pouco com as variáveis de ambiente disponíveis no Dockerfile.

Aglomerado

Neste exemplo, conectaremos 3 nós no cluster.

 

Primeiro, precisamos criar uma rede do Couchbase na qual conectaremos todos os nós.

Em seguida, criamos o primeiro nó.

 

Como todas as portas de rede estão expostas no primeiro nó, não é necessário expô-las aqui.

Atenção aos detalhes que CLUSTER_HOST é definido como node1.cluster que é o nome do host do primeiro nó e REBALANCEAMENTO DE CLUSTER também é definido como verdadeiro. Quando o nó for adicionado ao cluster, ele se reequilibrará automaticamente.

 

O nó3 também é adicionado ao cluster, mas como REBALANCEAMENTO DE CLUSTER não foi definido, será necessário um rebalanceamento manual do cluster para que ele se torne disponível.

 

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.

Deixar uma resposta