Este projeto é uma API REST simples em Node.js + Express que se conecta a um banco de dados PostgreSQL, tudo rodando dentro de containers Docker.
- Criar tabela
usersautomaticamente (se não existir). - Endpoints REST para:
- Listar usuários (
GET /users) - Inserir usuário (
POST /users) - Atualizar usuário (
PUT /users/:id) - Remover usuário (
DELETE /users/:id)
- Listar usuários (
Na raiz do projeto, execute:
docker-compose up --buildIsso vai subir dois serviços:
- api → aplicação Node.js rodando na porta
3000 - db → PostgreSQL 15 rodando na porta
5432
docker-compose downSe quiser também apagar volumes/dados:
docker-compose down -vA API usa variáveis de ambiente definidas no arquivo .env.
Crie um arquivo .env dentro da pasta app/ com o seguinte conteúdo:
PORT=3000
DB_USER=prova
DB_PASS=prova
DB_NAME=main
DB_HOST=db
⚠️ Note que oDB_HOSTdeve serdb, que é o nome do serviço nodocker-compose.yml.
Retorna mensagem de status.
Lista todos os usuários.
Cria um novo usuário.
Exemplo de body (JSON):
{
"name": "Maria Silva",
"email": "maria@example.com"
}Atualiza usuário pelo ID.
Exemplo:
{
"name": "Maria Atualizada",
"email": "maria@newmail.com"
}Remove usuário pelo ID.
O banco PostgreSQL é configurado com:
- Usuário:
prova - Senha:
prova - Banco:
main - Porta:
5432
Os dados são persistidos em um volume Docker chamado db_data.
.
├── app/
│ ├── index.js # Código principal da API
│ ├── package.json
│ ├── .env.example # Exemplo de variáveis de ambiente
│ └── Dockerfile
├── docker-compose.yml
└── README.md
Criar usuário:
curl -X POST http://localhost:3000/users -H "Content-Type: application/json" -d '{"name":"João","email":"joao@example.com"}'Listar usuários:
curl http://localhost:3000/usersAtualizar usuário:
curl -X PUT http://localhost:3000/users/1 -H "Content-Type: application/json" -d '{"name":"João Alterado","email":"joao@novo.com"}'Remover usuário:
curl -X DELETE http://localhost:3000/users/1⚡ Agora tua API está pronta para rodar em containers e conversar com o PostgreSQL!