Este arquivo docker-compose.yml fornece os serviços necessários para desenvolvimento local do Konecty.
- Versão: MongoDB 8.2
- Porta: 27017 (configurável via
MONGO_PORTno.env) - Volume:
mongodb-data(persistente) - Replica Set:
rs0(necessário para transações MongoDB) - Health Check: Disponível
- Inicialização: Serviço
mongodb-initconfigura o replica set automaticamente
- Porta AMQP: 5672 (configurável via
RABBITMQ_PORTno.env) - Porta Management UI: 15672 (configurável via
RABBITMQ_MGMT_PORTno.env) - Credenciais padrão:
admin/admin(configurável via.env) - Volume:
rabbitmq-data(persistente) - Health Check: Disponível
- Management UI: http://localhost:15672
docker-compose up -ddocker-compose ps# Todos os serviços
docker-compose logs -f
# Apenas MongoDB
docker-compose logs -f mongodb
# Apenas RabbitMQ
docker-compose logs -f rabbitmqdocker-compose downdocker-compose down -vAdicione ou ajuste as seguintes variáveis no seu .env:
# MongoDB
MONGO_PORT=27017
MONGO_URL=mongodb://localhost:27017/konecty?replicaSet=rs0
# RabbitMQ
RABBITMQ_PORT=5672
RABBITMQ_MGMT_PORT=15672
RABBITMQ_USER=admin
RABBITMQ_PASS=adminImportante: A URL do MongoDB deve incluir ?replicaSet=rs0 para que as transações funcionem corretamente.
Com os serviços Docker rodando, inicie a aplicação Konecty:
bun run devA aplicação se conectará ao MongoDB e RabbitMQ rodando nos containers.
Acesse a interface de gerenciamento do RabbitMQ em:
- URL: http://localhost:15672
- Usuário:
admin(ou o valor deRABBITMQ_USER) - Senha:
admin(ou o valor deRABBITMQ_PASS)
Para personalizações locais que não devem ser commitadas, crie um arquivo docker-compose.override.yml:
services:
mongodb:
ports:
- "27018:27017" # Porta diferenteEste arquivo está no .gitignore e será automaticamente mesclado pelo docker-compose.
- Verifique se a porta não está em uso:
lsof -i :27017 - Verifique os logs:
docker-compose logs mongodb
- Verifique se a porta não está em uso:
lsof -i :5672 - Verifique os logs:
docker-compose logs rabbitmq
docker-compose down -v
docker-compose up -dPara verificar se o replica set foi configurado corretamente:
docker-compose exec mongodb mongosh --eval "rs.status()"Você deve ver algo como:
{
"set": "rs0",
"members": [
{
"_id": 0,
"host": "mongodb:27017",
"stateStr": "PRIMARY"
}
]
}O MongoDB requer um replica set para habilitar transações. Sem isso, você verá erros como:
Transaction numbers are only allowed on a replica set member or mongos
O serviço mongodb-init configura automaticamente um replica set com um único membro para desenvolvimento local.