78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# Development Setup Guide
|
|
|
|
## Quick Start for Local Development
|
|
|
|
The `run_app.py` script mimics Docker production conditions while enabling fast iteration.
|
|
|
|
### Standard Development Mode (Recommended)
|
|
```bash
|
|
python run_app.py
|
|
```
|
|
|
|
**Features:**
|
|
- ✓ Loads environment variables from `.env` file
|
|
- ✓ Single Uvicorn worker with **fast auto-reload**
|
|
- ✓ Mimics Docker environment (`PYTHONUNBUFFERED=1`)
|
|
- ✓ Creates upload directory automatically
|
|
- ✓ Binds to `0.0.0.0:8000` (same as Docker)
|
|
|
|
**Best for:** Quick code iterations, template changes, debugging
|
|
|
|
### Production-Like Mode
|
|
```bash
|
|
python run_app.py --gunicorn
|
|
```
|
|
|
|
**Features:**
|
|
- ✓ Gunicorn with 4 Uvicorn workers (exactly like Docker)
|
|
- ✓ 120s timeout (same as Docker)
|
|
- ✓ Gunicorn's reload (slower but tests production server)
|
|
- ✓ Tests multi-worker behavior
|
|
|
|
**Best for:** Testing before deploying to Docker, load testing
|
|
|
|
## Environment Variables
|
|
|
|
The script automatically loads `.env` file variables:
|
|
- `RATE_PER_M2_BLACK` - Black & white print rate (default: 4.0)
|
|
- `RATE_PER_M2_COLOR` - Color print rate (default: 5.0)
|
|
- `SERVER_HOSTNAME` - Server hostname (default: einszwovier.local)
|
|
- `BOOKSTACK_PORT`, `OPENWEBUI_PORT`, `PORTAINER_PORT` - Service ports
|
|
- `MATRIX_USER`, `MATRIX_PASS`, `MATRIX_HOMESERVER` - Matrix integration
|
|
|
|
## Comparison: Dev vs Docker
|
|
|
|
| Feature | `python run_app.py` | `docker-compose up` |
|
|
|---------|---------------------|---------------------|
|
|
| Server | Uvicorn (single worker) | Gunicorn + Uvicorn (4 workers) |
|
|
| Auto-reload | ✓ Fast (watches all files) | ✓ Slow (Docker rebuild) |
|
|
| Env loading | `.env` file | `.env` file |
|
|
| Port | 8000 | 80→8000 |
|
|
| Memory limit | None | 1GB limit |
|
|
| Health checks | No | Yes |
|
|
| Dependencies | All services | Isolated |
|
|
|
|
## Troubleshooting
|
|
|
|
### `.env` file not found
|
|
Create `.env` file from template:
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
### Port 8000 already in use
|
|
```bash
|
|
# Find and kill process
|
|
lsof -ti:8000 | xargs kill -9
|
|
```
|
|
|
|
### Environment variables not loading
|
|
Ensure `python-dotenv` is installed:
|
|
```bash
|
|
pip install python-dotenv
|
|
```
|
|
|
|
### Testing Matrix integration locally
|
|
1. Start Matrix server: `docker-compose up synapse -d`
|
|
2. Run app: `python run_app.py`
|
|
3. Submit test order via `/cost` endpoint
|