# Docker Deployment Guide Bu dokümantasyon, Oltalama uygulamasını Docker ile tek container'da çalıştırma rehberidir. ## Gereksinimler - Docker 20.10+ - Docker Compose 2.0+ (opsiyonel) ## Hızlı Başlangıç ### Docker Compose ile (Önerilen) 1. **Environment dosyası oluştur** (opsiyonel): ```bash cp backend/.env.example backend/.env # backend/.env dosyasını düzenle ``` 2. **Docker Compose ile başlat**: ```bash docker-compose up -d ``` 3. **Logları izle**: ```bash docker-compose logs -f ``` 4. **Durdur**: ```bash docker-compose down ``` ### Docker ile (Manuel) 1. **Image'ı build et**: ```bash docker build -t oltalama:latest . ``` 2. **Container'ı çalıştır**: ```bash docker run -d \ --name oltalama \ -p 3000:3000 \ -v $(pwd)/data/database:/app/database \ -v $(pwd)/data/logs:/app/logs \ -e NODE_ENV=production \ -e SESSION_SECRET=$(openssl rand -hex 32) \ -e FRONTEND_URL=http://localhost:3000 \ oltalama:latest ``` ## Environment Variables Aşağıdaki environment variable'ları ayarlayabilirsiniz: - `NODE_ENV`: Ortam (production/development) - `PORT`: Server portu (varsayılan: 3000) - `DB_PATH`: Database dosya yolu (varsayılan: /app/database/oltalama.db) - `SESSION_SECRET`: Session secret key (üretmek için: `openssl rand -hex 32`) - `FRONTEND_URL`: Frontend URL'i (CORS için) Daha fazla environment variable için `backend/.env.example` dosyasına bakın. ## Veri Kalıcılığı Database ve log dosyaları volume'lerde saklanır: - `./data/database`: SQLite database dosyaları - `./data/logs`: Uygulama logları İlk çalıştırmada bu dizinler otomatik oluşturulur. ## Admin Kullanıcı Oluşturma İlk kurulumda admin kullanıcı oluşturmak için: ```bash # Container içine gir docker exec -it oltalama sh # Admin kullanıcı oluştur node scripts/create-admin.js ``` Veya container dışından: ```bash docker exec -it oltalama node scripts/create-admin.js ``` ## Health Check Container health check endpoint'i: `http://localhost:3000/health` Health check durumunu kontrol etmek için: ```bash docker ps # HEALTHY durumunu göreceksiniz ``` ## Loglar Logları görüntülemek için: ```bash # Docker Compose docker-compose logs -f # Docker docker logs -f oltalama ``` ## Database Backup Database'i yedeklemek için: ```bash # Container içindeki database'i kopyala docker cp oltalama:/app/database/oltalama.db ./backup-$(date +%Y%m%d).db ``` ## Troubleshooting ### Container başlamıyor 1. Logları kontrol edin: ```bash docker logs oltalama ``` 2. Port'un kullanılabilir olduğundan emin olun: ```bash netstat -tuln | grep 3000 ``` ### Database hatası 1. Database volume'ünün yazılabilir olduğundan emin olun: ```bash chmod -R 777 ./data/database ``` 2. Container'ı yeniden başlatın: ```bash docker-compose restart ``` ### Frontend görünmüyor 1. Frontend build'inin doğru yapıldığından emin olun: ```bash docker exec oltalama ls -la /app/src/public/dist ``` 2. Container'ı yeniden build edin: ```bash docker-compose build --no-cache docker-compose up -d ``` ## Production Deployment Production için: 1. **Güvenli SESSION_SECRET kullanın**: ```bash export SESSION_SECRET=$(openssl rand -hex 64) ``` 2. **HTTPS için reverse proxy kullanın** (Nginx, Traefik, vb.) 3. **Resource limitleri ayarlayın**: ```yaml # docker-compose.yml'e ekleyin deploy: resources: limits: cpus: '1' memory: 512M ``` 4. **Düzenli backup alın** ## Güncelleme Uygulamayı güncellemek için: ```bash # Yeni image'ı build et docker-compose build # Container'ı yeniden başlat docker-compose up -d ``` ## Sorun Bildirimi Sorun yaşarsanız, lütfen GitHub Issues'da bildirin.