Neste projeto visamos entender os conceitos aplicáveis de um projeto feito com microserviços que aumentam a performance e a escalabiladade dos negócios.
Este projeto é composto por um gerenciador de fila que será o rabbitmq
onde tera N´s aplicações consumindo o conteúdo desta fila (Que neste exemplo será o hospital
) e N´s aplicações colocando conteúdo na fila (Que neste exemplo será a doenca
)
Para baixar o projeto basta realizar um git clone https://github.com/guedesfelipe/PMED.git
deste projeto ou realizar o download manualmente.
🐋 Docker
Guia de instalação para distribuições Debian ⤵
-
Instalando o curl caso não tenha instalado na máquina ainda:
sudo apt install curl
-
Download do instalador docker:
curl -fsSL https://get.docker.com -o get-docker.sh
-
Executando o script do instalador baixado acima:
sudo sh get-docker.sh
-
Verificando se foi instalado corretamente e qual a versão que instalamos:
sudo docker --version
-
Agora vamos ver se o docker consegue subir um container com o comando abaixo:
sudo docker run --rm hello-world
📢 Este comando irá baixar uma imagem docker de hello world, e o parâmetro
--rm
significa que irá excluir este container assim que terminar a execução. Para mais detalhes digite:sudo docker run --help
que irá mostrar mais detalhadamente todos os parâmetros, inclusive o--rm
. -
Para conseguirmos executar o docker sem precisar do
sudo
:sudo usermod -aG docker $USER
newgrp docker
-
Para testar e listar os containers ativos:
docker ps
-
Listando todos os containers (Ativos e Inativos):
docker ps -a
Guia de instalação para Windowns ⤵
Guia de instalação para Mac ⤵
Precisamos criar um container do rabbitmq
para gerenciar nossa fila:
Para criar um container do rabbitmq (Caso não tenha a imagem do rabbitmq ele vai baixar):
docker run -d --hostname my-rabbit --name rabbitMQ -p 8080:15672 -p 5672:5672 -p 25676:25676 rabbitmq:3-management
⚠️ Pode ser necessário acesso root
Criando uma virtual env na raiz do projeto:
python3 -m venv venv
Ativar a virtual env criada:
source venv/bin/activate
Instalando dependencias do python:
pip install -r requirements.txt
Após isto na pasta raiz do projeto, execute o seguinte comando para criar uma imagem no docker do hospital
:
python controla_containers.py build hospital
docker build -t hospital -f docker/hospital/Dockerfile .
Após a criação da imagem do hospital
vamos criar a imagem no docker de doenca
:
python controla_containers.py build doenca
docker build -t doenca -f docker/doenca/Dockerfile .
Com as duas imagens criadas agora podemos subir quantos containers quisermos de cada imagem
- Exemplo de como criar um container da imagem do
hospital
:
python controla_containers.py run hospital NOME_HOSPITAL
docker run -it -d --name hospital_1 --entrypoint python --network host hospital:latest gera_hospital.py
⚠️ Trocar a variável PATH_DO_PROJETO para a pasta onde o projeto foi salvo em sua máquina
- Exemplo de como criar um container da imagem de
doenca
:
python controla_containers.py run doenca NOME_DOENCA TAXA_INFEC_SEG
docker run -it -d --name COVID --entrypoint python --network host doenca:latest gera_doenca.py --taxa-infec-seg 1
⚠️ Trocar a variável PATH_DO_PROJETO para a pasta onde o projeto foi salvo em sua máquina
Para verificar todos os comandos basta digitar:
python controla_containers.py --help