docker again
This commit is contained in:
203
DOCKER.md
Normal file
203
DOCKER.md
Normal file
@@ -0,0 +1,203 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user