Este cenário envolve a configuração de um ambiente Docker composto por vários contêineres para criar um sistema de comunicação assíncrona e processamento de mensagens.
Nesta etapa, estamos configurando a base do projeto. Primeiro, é necessário garantir que o Docker e o Docker Compose estejam instalados em sua máquina. Essa configuração é fundamental para criar e executar nossas aplicações.
- Certifique-se de que o Docker e o Docker Compose estejam instalados em sua máquina.
- Utilizamos o Docker Compose, uma ferramenta para definir e executar aplicativos multicontêineres, para criar e gerenciar esses containers.
- O comando
docker-compose up -d
é usado para iniciar os containers em segundo plano. - Verifique se os containers estão em execução com o comando
docker container ls
.
Na segunda etapa, introduzimos o RabbitMQ, um sistema de mensagens assíncronas que facilita a comunicação entre diferentes partes do sistema. Esta etapa envolve diversos containers para configurar essa integração.
-
Container Nginx (lab-web):
- Recebe uma página web que cria mensagens e as envia para o container RabbitMQ.
- Verifica a quantidade de mensagens na fila RabbitMQ.
- Processa a fila, o que inclui a ação de salvar as mensagens no container de banco de dados e enviar uma confirmação ("acknowledge") para a fila RabbitMQ.
-
Container RabbitMQ (lab-rabbitmq):
- Hospeda o serviço RabbitMQ, que é responsável pelo gerenciamento de filas de mensagens.
-
Container Intermediário (lab-backend-intermediario):
- Implementa funções em Python para interagir com o RabbitMQ e executar ações como adicionar mensagens à fila e processar mensagens.
- Recebe comandos da página web do container Nginx para adicionar mensagens à fila RabbitMQ.
- Responde às solicitações do Nginx para obter a quantidade de mensagens na fila e processar a fila.
- Salva os dados processados no banco de dados configurado na etapa de configuração inicial.
- Envia uma confirmação ("acknowledge") para o RabbitMQ após o processamento bem-sucedido.
O arquivo docker-compose.yml
define e orquestra os serviços Docker necessários para o projeto. Aqui está uma visão geral dos serviços e como eles se relacionam:
-
lab-rabbitmq
(RabbitMQ):- Fornece a funcionalidade de fila de mensagens RabbitMQ.
-
lab-web
(Nginx):- Recebe uma página web que cria e envia mensagens para o RabbitMQ.
- Verifica a quantidade de mensagens na fila e processa a fila.
- Encaminha solicitações para o container intermediário.
-
lab-backend-intermediario
(Contêiner Intermediário):- Implementa funções em Python para interagir com o RabbitMQ e executar ações específicas.
- Recebe comandos da página web para adicionar mensagens à fila RabbitMQ.
- Responde às solicitações para obter a quantidade de mensagens na fila e processar a fila.
- Salva dados processados no banco de dados configurado na etapa de configuração inicial.
- Envia uma confirmação ("acknowledge") para o RabbitMQ após o processamento bem-sucedido.
-
Outros serviços, como o banco de dados MySQL e a interface de administração, também estão presentes para suportar as operações do projeto.
Observação: Lembre-se de que as configurações específicas, como nomes de usuários, senhas e outras variáveis de ambiente, devem ser definidas no arquivo .env
antes de iniciar o projeto. Certifique-se de fazer essas alterações para corresponder às configurações desejadas.