Conteinerizado uma api, construída em node usando prisma e express, e um banco de dados, PostgreSQL, por meio de um compose docker.
A comunicação entre os dois containers é feita por meio da rede api-network
que é definida pelo compose, evitando expor o banco de dados a outros aplicativos.
A API possui como finalidade simular um sistema de cadastro de alunos e notas (dos alunos), para tal ela possuí 5 endpoints.
Lista todos os alunos cadastrados.
Adiciona um aluno no sistema.
- cpf: cpf do aluno.
- serie: serie do aluno.
Altera as informações de um aluno cadastrado.
- serie: serie do aluno
Remove um aluno cadastrado.
Adiciona a nota de um aluno.
- semestre: semestre do qual a nota é correspondente.
- nota: valor da nota alcançada pelo aluno.
Para configurar o banco de dados foi usado o comando migrate do prisma para, de forma automática, gerar as tabelas e esquemas necessários.
Para evitar o uso do banco como administrador foi usado esse script adaptado, nele é realizada a checagem de todas as variáveis de ambiente necessárias e executado os comandos (via psql) para criar um novo usuário, banco de dados e garantir acesso apenas ao novo banco criado.
Como o PostgreSQL salva seus dados (por padrão) na pasta /var/lib/pgsql/data
para manter os dados entre execuções foi criado o volume api-data
que armazena os arquivos dessa página e replica em caso de nova execução.
Basta executar o comando:
docker compose up