Servidor Couchbase

Implantar um aplicativo PHP com Couchbase como contêineres do Docker

No início do ano, escrevi sobre a conteinerização de aplicativos escritos em várias tecnologias de desenvolvimento que se comunicam com o Couchbase Server. Por exemplo, escrevi sobre a implantação de um aplicativo Aplicativo Golang com o Docker, a Aplicativo Java com o Dockere um Aplicativo Node.js com o Docker. Desta vez, vamos dar uma olhada em como implantar um contêiner PHP que se comunica com um contêiner do Couchbase Server.

Vamos criar um nó do Couchbase provisionado automaticamente e um aplicativo PHP simples que grava e lê dados do nó NoSQL do Couchbase.

Primeiro, vamos definir a estrutura do projeto que representará os dois contêineres:

Cada contêiner terá seu próprio Dockerfile que conterá informações de blueprint para nossa configuração. As docker-compose.yml criará e implantará os contêineres usando a porta definida e as informações da variável de ambiente.

Containerização do aplicativo PHP

Como este é um tutorial de PHP, começaremos criando nosso aplicativo PHP simples e colocando-o em contêineres. Como queremos automatizar a implantação, desenvolveremos nosso aplicativo php.ini localmente e copiando-o durante o processo de compilação.

Antes de chegarmos a essa parte, vamos adicionar algum código ao index.php file:

No código acima, estamos dizendo que todos os dados impressos estarão no formato JSON. Estamos estabelecendo uma conexão com um cluster do Couchbase e abrindo um determinado Bucket nesse cluster. O problema aqui é que estamos usando variáveis de ambiente para definir o cluster e o Bucket. Elas serão definidas no processo de implantação.

Com o aplicativo conectado, ele tentará obter um documento do Couchbase por chave. Se esse documento não existir, ele será criado e, em seguida, obtido. O documento obtido será impresso como resultado.

Como mencionei anteriormente, este é um aplicativo simples, nada sofisticado. Agora podemos nos concentrar no aspecto do Docker desse aplicativo.

Abra o Dockerfile e incluem o seguinte:

O texto acima diz que usaremos uma imagem do Apache. Se você já usou o Couchbase com PHP, o que vem a seguir lhe parecerá muito familiar. Todo o conjunto de dependências foi retirado diretamente do arquivo Documentação PHP do Couchbase. O CORRER significa que as dependências serão coletadas no momento da compilação, não no momento da execução.

Com as dependências disponíveis, o php.ini é copiado para a imagem, assim como o arquivo index.php arquivo. Isso nos leva ao arquivo php.ini arquivo.

Em vez de colar uma parte longa e desagradável da configuração, é melhor fazer o download do arquivo php.ini do arquivo oficial Repositório PHP no GitHub. A única alteração que estamos fazendo é em relação às extensões. De acordo com o Documentação PHP do Couchbaseprecisamos adicionar o seguinte:

Localize a seção de extensões e adicione-a lá.

Neste ponto, a imagem PHP pode ser criada e podemos implantá-la como um contêiner. No entanto, vamos planejar com antecedência e criar um arquivo Compose.

Abra o docker-compose.yml e inclua o seguinte:

O texto acima define um serviço chamado php com mapeamentos de portas e variáveis de ambiente. Essas variáveis correspondem ao que temos no aplicativo PHP. A imagem será criada a partir do arquivo Dockerfile encontrado no projeto PHP.

Se você definir o COUCHBASE_HOST para algo remoto, estamos prontos para começar, mas, neste exemplo, usaremos outro contêiner.

Colocação do Couchbase Server em contêineres

O objetivo de colocar o Couchbase em contêineres é automatizá-lo. Já existe uma imagem do Docker para o Couchbase, mas ela não é pré-provisionada, o que pode levar tempo durante o processo de implementação.

Abra o Dockerfile do projeto Couchbase e inclua o seguinte:

O texto acima diz que usaremos a imagem oficial do Couchbase, mas copiaremos um script para ela e o executaremos em tempo de execução. Esse script provisionará a instância automaticamente.

Abra o configure.sh e inclua os seguintes comandos:

O Couchbase Server tem sua própria API RESTful que estamos tentando consumir com vários comandos cURL. Estamos definindo cotas de memória, quais serviços existem no nó e informações de autenticação.

Observe que muitos dos comandos incluem variáveis ambientais como $COUCHBASE_ADMINISTRATOR_USERNAME. Isso ocorre porque vamos passá-los por meio do docker-compose.yml da mesma forma que fizemos com o aplicativo PHP.

Abra o docker-compose.yml e faça com que ele se pareça com o seguinte:

Incluímos outro serviço chamado couchbase com um monte de mapeamentos de portas e variáveis de ambiente. No entanto, há algo importante a ser observado aqui. Lembre-se de que o COUCHBASE_HOST na seção PHP? Ele tem um host que deve corresponder ao nome do serviço do nosso banco de dados, que é couchbase.

Implantar os contêineres com o Docker

Com a base estabelecida, é hora de implantar os dois contêineres para que tenhamos um conjunto funcional de microsserviços.

Na CLI do Docker, execute o seguinte:

Os comandos acima criarão e implementarão cada uma das imagens com as portas definidas no arquivo Compose. No navegador da Web, http://localhost:8091 deve levá-lo ao painel do Couchbase Server, e http://localhost:8080 deve levá-lo ao seu aplicativo PHP.

Se for bem-sucedido, você verá as informações salvas no banco de dados e exibidas na tela.

Conclusão

Você acabou de ver como conteinerizar e implantar um aplicativo PHP que se comunica com um contêiner NoSQL do Couchbase. Embora nossa escolha de aplicativo tenha sido simples, ele pode ser facilmente ampliado para algo mais complicado usando qualquer uma das estruturas PHP disponíveis.

Esse mesmo guia pode ser visto com Node.js, Golange Java. Se quiser saber mais sobre a conteinerização do Couchbase Server, escrevi uma versão mais completa aqui.

Para obter mais informações sobre o SDK PHP do Couchbase, consulte a seção Portal do desenvolvedor do Couchbase.

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

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Um comentário

  1. Ele é muito antigo. Podemos ter o sdk 3.0?

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.