.NET

Docker e ASP.NET Core com o Couchbase Server

Em muitas de minhas postagens e exemplos no blog, uso um único nó do Couchbase Server. Faço isso porque é fácil, e muito do que demonstro pode ser feito com um único nó. No entanto, o Couchbase Server é normalmente executado em vários nós na produção (às vezes 3, às vezes 3000). Para simular isso localmente, posso usar alguns contêineres leves do Docker.

Enquanto isso, vou mostrar a você como começar com um site ASP.NET Core, também em execução no Docker.

O que você precisa para começar

Depois de instalar todos os itens acima, certifique-se de ativar o compartilhamento de unidades no Docker. Caso contrário, você receberá um erro como A tarefa "PrepareForLaunch" falhou inesperadamente mais tarde. (Eu precisei ativar o compartilhamento nas unidades C e D, mas sua configuração pode variar).

Enable shared drives in Docker for Windows

Configurar o servidor Couchbase no Docker

Comece executando uma imagem do Docker do Couchbase. Como o site ASP.NET Core será executado no Docker, só precisamos expor a porta 8091 (para usar o Console do Couchbase de um navegador da Web em localhost:8091).

docker run -d --name db -p 8091:8091 couchbase

Eu o chamei de db mas você pode dar o nome que quiser. Eu especifiquei couchbase como a imagem, que é o Couchbase Server 4.5.1 no momento em que estou escrevendo este artigo.

Em seguida, execute pelo menos mais um contêiner com o Couchbase. Não há necessidade de mapear nenhuma porta para eles. Vou criar apenas dois:

docker run -d --name db2 couchbase

docker run -d --name db3 couchbase

Anote os endereços IP desses dois contêineres usando docker inspeciona o banco de dados / docker inspecionar db2 / etc... e procurando por Endereço IPA na saída.

Agora, aponte seu navegador da Web para localhost:8091 para configurar o cluster do Couchbase. Se você não tiver feito isso antes, pode dar uma olhada em esta postagem do blog sobre como configurar o Couchbase Server ou você pode Assista a este vídeo sobre o passo a passo da configuração do Couchbase Server.

Quando você configurar e criar um bucket (eu criei um bucket chamado "default"), vá em frente e ative a replicação, já que vamos adicionar mais alguns nós.

Enable replication when creating a bucket

Vá para a guia Server Nodes (Nós do servidor) e clique em "Add Server" (Adicionar servidor). Digite o endereço IP do db2 e clique em "Add Server" (Adicionar servidor). Repita o procedimento para o db3 e quaisquer outros nós que você tenha criado. Nesse ponto, você deverá ver um número ao lado de "Pending Rebalance" (Reequilíbrio pendente). Isso significa que os nós estão prontos para fazer parte do cluster.

Rebalance pending in Couchbase Console

Clique em "rebalance". Isso levará um pouco de tempo, mas, quando terminar, você terá um cluster do Couchbase Server em execução no Docker. É importante observar que, mesmo durante a operação de rebalanceamento, o cluster permanece funcional.

Couchbase Cluster in Docker

Enquanto estiver no Console do Couchbase, vá em frente e crie um índice primário. Executar CREATE PRIMARY INDEX on default na guia Query (Consulta). O aplicativo ASP.NET Core precisará disso.

Criar um aplicativo ASP.NET Core

No Visual Studio, crie um novo aplicativo ASP.NET Core. Ou você pode usar o aplicativo Código-fonte do ASP.NET Core que já preparei para este exemplo no GitHub. É um site muito simples com duas operações: listar todos os presentes e adicionar um novo presente aleatório à lista. (É aquela época do ano e estou pensando em presentes!)

New ASP.NET Core project in Visual Studio

Adicione a dependência do CouchbaseNetClient com o NuGet. Usaremos o .NET Core SDK, que está atualmente na visualização para desenvolvedores. Portanto, você precisará executar Instalar o pacote CouchbaseNetClient -Pre no console do Package Manager. Se você não usar o -Préo NuGet tentará instalar o SDK do .NET em vez do SDK do .NET Core.

Em seguida, adicione o suporte do Docker ao projeto. Clique com o botão direito do mouse no projeto, clique em Add e, em seguida, clique em "Docker Support". Isso adicionará alguns arquivos do Docker ao seu projeto. Se você não vir essa opção, precisará instalar Ferramentas do Visual Studio para o Docker.

Add Docker support with Visual Studio Tools for Docker

No aplicativo ASP.NET Core, configure o Ajudante de cluster para apontar para o cluster do Couchbase usando um ou mais endereços IP dos contêineres db/db2/db3.

Confira o código-fonte completo no GitHub, especialmente HomeController.cs e Presente.cs. Aqui está o Índice ação e o GetAllGifts que ele está chamando.

Como você tem as ferramentas do Docker instaladas, há um novo botão de implantação para o Docker.

Docker deploy button in Visual Studio

Clique aqui para executar seu aplicativo ASP.NET Core no Docker. Observe que, quando você executa isso pela primeira vez, pode demorar mais porque está baixando o arquivo aspnetcore do Docker Hub.

Depois que o contêiner é implantado, há mais uma etapa. Por algum motivo, a imagem do Docker do aspnetcore não se conecta à rede Docker "bridge". Portanto, o aplicativo ASP.NET Core não consegue ver o cluster do Couchbase. Para adicionar a "ponte", execute docker network connect bridge dockernetcore_dockernetcore_1 (o nome do seu contêiner pode variar). Pode haver outra maneira de fazer isso alterando a variável Dockerfile ou docker-compose.ymlmas não sei o que é (ainda).

Execute o aplicativo ASP.NET Core novamente (com o Docker). O site deve aparecer em seu navegador. Neste ponto, você tem quatro contêineres em execução no host do Docker: um servidor Web executando o ASP.NET Core e três nós do Couchbase Server.

ASP.NET Core website using Couchbase Server

Resumo

Quando seu site estiver em execução e você tiver adicionado alguns presentes, volte ao Console do Couchbase e abra a guia Server Nodes (Nós do servidor). Dê uma olhada na coluna "Items" e observe a divisão Active/Replica. À medida que você adiciona presentes, observe que os documentos estão sendo automaticamente divididos entre os nós e as réplicas estão sendo armazenadas nos outros nós.

Outra coisa que você pode tentar por diversão: ative o failover automático (Settings → Auto-Failover → Enable) e, em seguida, desligue um dos nós do Couchbase (docker stop db2 por exemplo). Em seguida, observe o Console do Couchbase enquanto o nó é desativado e os outros nós são compensados. Por fim, coloque o nó novamente on-line (docker start db2) e observe que o cluster lhe dá algumas opções para adicionar o nó novamente.

Options for recovering a Couchbase node

Sou muito novo no Docker e no ASP.NET Core, portanto, se você tiver alguma dica ou sugestão, gostaria de ouvi-la. Por favor, deixe um comentário ou encontrar @mgroves no Twitter.

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

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

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.