204 lines
3.6 KiB
Markdown
204 lines
3.6 KiB
Markdown
|
|
# 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.
|
|||
|
|
|