update
This commit is contained in:
167
docs/LOCAL_DEVELOPMENT.md
Normal file
167
docs/LOCAL_DEVELOPMENT.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# Local Development Setup
|
||||
|
||||
This guide helps you run Munich News Daily locally for development and testing.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# 1. Copy local environment files
|
||||
cp .env.local .env
|
||||
cp backend/.env.local backend/.env
|
||||
|
||||
# 2. Start services with local configuration
|
||||
docker-compose -f docker-compose.local.yml up -d
|
||||
|
||||
# 3. Check logs
|
||||
docker-compose -f docker-compose.local.yml logs -f
|
||||
|
||||
# 4. Access services
|
||||
# - Frontend: http://localhost:3000
|
||||
# - Backend API: http://localhost:5001
|
||||
# - MongoDB: localhost:27017
|
||||
# - Ollama: http://localhost:11434
|
||||
```
|
||||
|
||||
## Differences from Production
|
||||
|
||||
| Feature | Production | Local Development |
|
||||
|---------|-----------|-------------------|
|
||||
| Ollama Model | `gemma3:12b` (large) | `phi3:latest` (small, fast) |
|
||||
| MongoDB Port | Internal only | Exposed on 27017 |
|
||||
| Ollama Port | Internal only | Exposed on 11434 |
|
||||
| Container Names | `munich-news-*` | `munich-news-local-*` |
|
||||
| Volumes | `*_data` | `*_data_local` |
|
||||
| Email | Production SMTP | Test/disabled |
|
||||
|
||||
## Useful Commands
|
||||
|
||||
### Start/Stop Services
|
||||
```bash
|
||||
# Start all services
|
||||
docker-compose -f docker-compose.local.yml up -d
|
||||
|
||||
# Stop all services
|
||||
docker-compose -f docker-compose.local.yml down
|
||||
|
||||
# Restart a specific service
|
||||
docker-compose -f docker-compose.local.yml restart backend
|
||||
|
||||
# View logs
|
||||
docker-compose -f docker-compose.local.yml logs -f crawler
|
||||
```
|
||||
|
||||
### Testing
|
||||
|
||||
```bash
|
||||
# Trigger a news crawl (2 articles for quick testing)
|
||||
curl -X POST http://localhost:5001/api/admin/trigger-crawl \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"max_articles": 2}'
|
||||
|
||||
# Trigger transport crawl
|
||||
curl -X POST http://localhost:5001/api/transport/crawl
|
||||
|
||||
# Check articles in MongoDB
|
||||
docker exec munich-news-local-mongodb mongosh munich_news \
|
||||
--eval "db.articles.find({}, {title: 1, keywords: 1, category: 1}).limit(3)"
|
||||
|
||||
# Check transport disruptions
|
||||
curl http://localhost:5001/api/transport/disruptions
|
||||
```
|
||||
|
||||
### Database Access
|
||||
|
||||
```bash
|
||||
# Connect to MongoDB
|
||||
docker exec -it munich-news-local-mongodb mongosh munich_news
|
||||
|
||||
# Or from host (if you have mongosh installed)
|
||||
mongosh "mongodb://admin:local123@localhost:27017/munich_news"
|
||||
|
||||
# Useful queries
|
||||
db.articles.countDocuments()
|
||||
db.articles.find({keywords: {$exists: true}}).limit(5)
|
||||
db.subscribers.find()
|
||||
db.transport_alerts.find()
|
||||
```
|
||||
|
||||
### Ollama Testing
|
||||
|
||||
```bash
|
||||
# List models
|
||||
curl http://localhost:11434/api/tags
|
||||
|
||||
# Test generation
|
||||
curl http://localhost:11434/api/generate -d '{
|
||||
"model": "phi3:latest",
|
||||
"prompt": "Summarize: Munich opens new U-Bahn line",
|
||||
"stream": false
|
||||
}'
|
||||
```
|
||||
|
||||
## Cleanup
|
||||
|
||||
```bash
|
||||
# Stop and remove containers
|
||||
docker-compose -f docker-compose.local.yml down
|
||||
|
||||
# Remove volumes (WARNING: deletes all data)
|
||||
docker-compose -f docker-compose.local.yml down -v
|
||||
|
||||
# Remove local volumes specifically
|
||||
docker volume rm munich-news_mongodb_data_local
|
||||
docker volume rm munich-news_mongodb_config_local
|
||||
docker volume rm munich-news_ollama_data_local
|
||||
```
|
||||
|
||||
## Switching Between Local and Production
|
||||
|
||||
```bash
|
||||
# Switch to local
|
||||
cp .env.local .env
|
||||
cp backend/.env.local backend/.env
|
||||
docker-compose -f docker-compose.local.yml up -d
|
||||
|
||||
# Switch to production
|
||||
cp .env.production .env # (if you have one)
|
||||
cp backend/.env.production backend/.env
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Ollama model not downloading
|
||||
```bash
|
||||
# Pull model manually
|
||||
docker exec munich-news-local-ollama ollama pull phi3:latest
|
||||
```
|
||||
|
||||
### MongoDB connection refused
|
||||
```bash
|
||||
# Check if MongoDB is running
|
||||
docker-compose -f docker-compose.local.yml ps mongodb
|
||||
|
||||
# Check logs
|
||||
docker-compose -f docker-compose.local.yml logs mongodb
|
||||
```
|
||||
|
||||
### Port already in use
|
||||
```bash
|
||||
# Check what's using the port
|
||||
lsof -i :5001 # or :3000, :27017, etc.
|
||||
|
||||
# Stop the conflicting service or change port in docker-compose.local.yml
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
1. **Use phi3 for speed** - It's much faster than gemma3 for local testing
|
||||
2. **Limit articles** - Use `max_articles: 2` for quick crawl tests
|
||||
3. **Watch logs** - Keep logs open to see what's happening
|
||||
4. **Separate volumes** - Local and production use different volumes, so they don't interfere
|
||||
|
||||
## Next Steps
|
||||
|
||||
- See `docs/PERSONALIZATION.md` for personalization feature development
|
||||
- See `docs/OLLAMA_SETUP.md` for AI configuration
|
||||
- See main `README.md` for general documentation
|
||||
Reference in New Issue
Block a user