d. Containerização
Como vimos no hands-on anterior, os microsserviços são implementados como aplicações Spring Boot. Para executá-los, precisamos preparar o ambiente instalando o banco de dados que vai persistir os dados. Para isso, vamos usar um arquivo do Docker Compose para criar um container PostgreSQL e também um cluster que isola os microsserviços do acesso externo, criando um ambiente seguro — a camada confiável (trusted layer).
Um arquivo do Docker Compose é um arquivo YAML que define como os containers Docker devem se comportar em produção. O arquivo contém a configuração do banco de dados, dos microsserviços e da rede.
O diagrama abaixo ilustra a arquitetura do sistema que será criada com o Docker Compose, na qual os microsserviços ficam isolados do acesso externo, formando uma camada confiável. Os microsserviços só acessam o banco de dados, e o acesso externo é bloqueado.
flowchart LR
subgraph api [Camada confiável]
account e3@==> db@{ shape: cyl, label: "Banco de dados" }
end
internet e1@==>|requisição| account:::red
e1@{ animate: true }
e3@{ animate: true }
classDef red fill:#fcc No diagrama, o microsserviço account é a camada de lógica de negócio que interage com o banco de dados.
A estrutura de diretórios do projeto fica mais ou menos assim:
📁 api/
├── 📁 account/
├── 📁 account-service/
│ ├── 📁 src/
│ └── Dockerfile
├── .env
└── compose.yaml
O arquivo compose.yaml contém a configuração do banco de dados, dos microsserviços e da rede. O arquivo .env contém as variáveis de ambiente do banco de dados, como o nome de usuário, a senha e o nome do banco. O arquivo Dockerfile contém a configuração do microsserviço, como a imagem base, as dependências e o comando para executar a aplicação.
O conteúdo dos arquivos é o seguinte:
Nessa configuração, usamos a imagem postgres:17 para criar um container PostgreSQL e definimos as variáveis de ambiente do banco de dados por meio do arquivo .env.
Para executar a aplicação, precisamos rodar o seguinte comando:
E, para verificar se a aplicação está em execução, podemos rodar o seguinte comando:
Pronto! No próximo hands-on, vamos nos conectar ao banco de dados e executar algumas consultas para verificar se os dados estão sendo persistidos corretamente.