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 Docker Compose para criar um container PostgreSQL, bem como um cluster que isola os microsserviços do acesso externo, criando um ambiente seguro — a camada confiável (trusted layer).
Um arquivo 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 e dos microsserviços, bem como a configuração 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. Só o account publica uma porta (8080); o banco não tem ports, então só é acessível de dentro da rede do Compose — a camada confiável.
Para executar a aplicação, precisamos rodar o seguinte comando:
E, para verificar se a aplicação está rodando, podemos executar 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.