Initial commit: Ebook Translation System with Docker setup

This commit is contained in:
richardtekula
2025-11-11 16:01:34 +01:00
commit e1b95c613d
43 changed files with 13922 additions and 0 deletions

455
DOCKER_README.md Normal file
View File

@@ -0,0 +1,455 @@
# 🐳 Docker Setup - Rýchly Štart
Tento návod vysvetľuje ako rýchlo spustiť Ebook Translation System pomocou Dockeru.
---
## 📦 Čo bolo pridané
### **Nové súbory:**
```
Ebook_System/
├── docker-compose.yml ✅ Orchestrácia všetkých služieb
├── .env.production ✅ Produkčná konfigurácia (vzor)
├── .dockerignore ✅ Čo vylúčiť z Docker obrazu
├── docker-start.sh ✅ Pomocný skript pre spustenie
├── init-scripts/
│ └── 01-init.sql ✅ PostgreSQL inicializácia
├── ebook_backend&admin_panel/
│ └── Dockerfile ✅ Backend Docker image
├── NAVOD_SLOVENSKY.md ✅ Kompletný slovenský návod
├── COOLIFY_DEPLOYMENT.md ✅ Návod na Coolify deployment
└── DOCKER_README.md ✅ Tento súbor
```
---
## 🚀 Rýchly Štart - Lokálne Testovanie
### **1. Príprava**
```bash
cd /home/richardtekula/Documents/WORK/extension/Ebook_System
# Vytvorte .env súbor z .env.production
cp .env.production .env
# Upravte premenné v .env (hesla, SECRET_KEY, atď.)
nano .env
```
### **2. Spustenie**
```bash
# Spustenie pomocou skriptu (najjednoduchšie)
chmod +x docker-start.sh
./docker-start.sh
# Vyberte možnosť 1
# ALEBO manuálne cez docker-compose
docker-compose up -d --build
```
### **3. Overenie**
```bash
# Skontrolujte či všetko beží
docker-compose ps
# Health check
curl http://localhost:8000/health
# Sledujte logy
docker-compose logs -f
```
### **4. Prístup**
- **Admin Panel:** http://localhost:8000/login
- **API Docs:** http://localhost:8000/docs
- **Health:** http://localhost:8000/health
**Default login:**
- Username: `admin`
- Password: hodnota z `.env` súboru (`ADMIN_PASSWORD`)
---
## 🌐 Deployment na Coolify
Pre produkčné nasadenie na Coolify server postupujte podľa návodu:
**📖 Prečítajte:** `COOLIFY_DEPLOYMENT.md`
**Stručný postup:**
1. Nahrajte projekt do Git repozitára (GitHub/GitLab)
2. V Coolify vytvorte nový "Docker Compose" resource
3. Pripojte Git repozitár
4. Nastavte environment variables
5. Nakonfigurujte doménu + SSL
6. Deploy!
---
## 🛠️ Použitie docker-start.sh skriptu
```bash
./docker-start.sh
```
**Menu options:**
1. **Spustiť celý systém** - Build + štart (prvé spustenie)
2. **Spustiť systém** - Bez rebuild (rýchlejšie)
3. **Zastaviť systém** - Vypne všetky kontajnery
4. **Reštartovať systém** - Reštart bez rebuild
5. **Zobraziť logy** - Real-time logy
6. **Stav kontajnerov** - Prehľad stavu a resources
7. **Vyčistiť všetko** - Zmaže kontajnery, volumes, dáta (POZOR!)
8. **Zálohovať databázu** - Vytvorí SQL dump
9. **Ukončiť** - Exit zo skriptu
---
## 📋 Docker Compose Príkazy
### **Základné operácie:**
```bash
# Spustiť (detached mode)
docker-compose up -d
# Spustiť + rebuild
docker-compose up -d --build
# Zastaviť
docker-compose down
# Zastaviť + zmazať volumes (stratíte dáta!)
docker-compose down -v
# Reštart
docker-compose restart
# Reštart len backend
docker-compose restart backend
```
### **Logy:**
```bash
# Všetky logy
docker-compose logs -f
# Len backend logy
docker-compose logs -f backend
# Len databáza logy
docker-compose logs -f postgres
# Posledných 100 riadkov
docker-compose logs --tail=100 backend
```
### **Stav:**
```bash
# Stav kontajnerov
docker-compose ps
# Resource usage
docker stats
# Detail o kontajneri
docker inspect <container-name>
```
### **Databáza:**
```bash
# Pripojenie do PostgreSQL
docker-compose exec postgres psql -U ebook_user -d ebook_prod
# Backup
docker-compose exec postgres pg_dump -U ebook_user ebook_prod > backup.sql
# Restore
cat backup.sql | docker-compose exec -T postgres psql -U ebook_user ebook_prod
# SQL príkaz
docker-compose exec postgres psql -U ebook_user -d ebook_prod -c "SELECT COUNT(*) FROM coupon_codes;"
```
### **Debugging:**
```bash
# Vstúpiť do backend kontajnera
docker-compose exec backend bash
# Spustiť Python v kontajneri
docker-compose exec backend python
# Skontrolovať environment variables
docker-compose exec backend env
# Manuálne spustiť init_db.py
docker-compose exec backend python /app/admin-backend/init_db.py
```
---
## 🔍 Architektúra Stacku
```
┌─────────────────────────────────────────┐
│ Docker Compose Stack │
├─────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────┐ │
│ │ Backend Container │ │
│ │ - FastAPI app │ │
│ │ - Admin frontend (static files) │ │
│ │ - Port: 8000 │ │
│ │ - Volumes: │ │
│ │ * backend_logs │ │
│ │ * translation_files │ │
│ └────────────┬──────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────┐ │
│ │ PostgreSQL Container │ │
│ │ - Database: ebook_prod │ │
│ │ - User: ebook_user │ │
│ │ - Port: 5432 (internal) │ │
│ │ - Volume: postgres_data │ │
│ └───────────────────────────────────┘ │
│ │
└─────────────────────────────────────────┘
Network: ebook_network (bridge)
```
---
## 📝 Environment Variables
**Najdôležitejšie premenné v `.env`:**
```bash
# Database - používa sa v docker-compose.yml
POSTGRES_DB=ebook_prod
POSTGRES_USER=ebook_user
POSTGRES_PASSWORD=ZMENTE_TOTO_HESLO
# Security - používa backend
SECRET_KEY=vygenerovany-tajny-kluc-32-znakov
ADMIN_PASSWORD=VaseAdminHeslo123
# CORS - pre production
CORS_ORIGINS=https://vasa-domena.sk
# Debug - FALSE v produkcii!
DEBUG=false
ENVIRONMENT=production
```
**Generovanie SECRET_KEY:**
```bash
# Metóda 1: Python
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
# Metóda 2: OpenSSL
openssl rand -base64 32
```
---
## 🔐 Bezpečnosť
### **Pred produkciou:**
- [ ] Zmeňte všetky default heslá v `.env`
- [ ] Vygenerujte nový `SECRET_KEY`
- [ ] Nastavte `DEBUG=false`
- [ ] Aktualizujte `CORS_ORIGINS` na vašu doménu
- [ ] Použite silné heslá (min. 16 znakov)
- [ ] `.env` súbor NIKDY nedávajte do Gitu
- [ ] Použite HTTPS v produkcii
### **.gitignore:**
Uistite sa že `.env` je v `.gitignore`:
```bash
# Skontrolujte
cat .gitignore | grep .env
# Ak nie je, pridajte
echo ".env" >> .gitignore
echo ".env.production" >> .gitignore
echo "*.env" >> .gitignore
```
---
## 🐛 Riešenie Problémov
### **Backend sa nespustí:**
```bash
# Logy
docker-compose logs backend
# Skontrolujte DATABASE_URL
docker-compose exec backend env | grep DATABASE_URL
# Reštart
docker-compose restart backend
```
### **Databáza nie je dostupná:**
```bash
# Stav
docker-compose ps postgres
# Logy
docker-compose logs postgres
# Test pripojenia
docker-compose exec postgres psql -U ebook_user -d ebook_prod -c "SELECT 1;"
```
### **Port 8000 už používaný:**
```bash
# Nájdite proces
lsof -i :8000
# Zastavte ho
kill -9 <PID>
# ALEBO zmeňte port v docker-compose.yml
ports:
- "8001:8000" # localhost:8001 → container:8000
```
### **Permission denied chyby:**
```bash
# Opravte ownership
sudo chown -R $USER:$USER .
# Alebo konkrétne volumes
docker-compose down
sudo rm -rf volumes/ # Ak existujú lokálne
docker-compose up -d --build
```
---
## 📊 Monitoring
### **Health Check:**
```bash
# HTTP request
curl http://localhost:8000/health
# Parsovaný JSON výstup
curl -s http://localhost:8000/health | jq
# Watch (sledovanie každú sekundu)
watch -n 1 'curl -s http://localhost:8000/health | jq'
```
### **Resource Usage:**
```bash
# Real-time stats
docker stats
# Disk usage
docker system df
# Volume sizes
docker volume ls
docker volume inspect ebook_postgres_data | jq '.[0].Mountpoint'
```
---
## 🔄 Update Workflow
### **Po zmenách v kóde:**
```bash
# 1. Zastavte systém
docker-compose down
# 2. Pull najnovšie zmeny (ak používate Git)
git pull
# 3. Rebuild a spustite
docker-compose up -d --build
# 4. Sledujte logy
docker-compose logs -f
```
### **Len reštart bez rebuild:**
```bash
docker-compose restart backend
```
---
## 📖 Ďalšie Návody
- **`NAVOD_SLOVENSKY.md`** - Kompletný slovenský návod
- **`COOLIFY_DEPLOYMENT.md`** - Deployment na Coolify
- **`SYSTEM_DOCUMENTATION.md`** - Technická dokumentácia
- **`README.md`** - Anglická dokumentácia
---
## ✅ Quick Checklist
### **Prvé spustenie:**
- [ ] Docker a Docker Compose nainštalované
- [ ] `.env` súbor vytvorený z `.env.production`
- [ ] Heslá a SECRET_KEY zmenené
- [ ] `docker-compose up -d --build` spustené
- [ ] Health check OK (http://localhost:8000/health)
- [ ] Admin login funguje (http://localhost:8000/login)
- [ ] Testovací kupón vygenerovaný
- [ ] Translation file nahraný
- [ ] Chrome extension nakonfigurovaný
### **Pred deploymentom na Coolify:**
- [ ] Projekt v Git repozitári
- [ ] `.env` súbor v `.gitignore`
- [ ] `DEBUG=false` v produkcii
- [ ] Doména pripravená
- [ ] DNS nakonfigurované
- [ ] Environment variables pripravené pre Coolify
- [ ] Zálohovacia stratégia naplánovaná
---
## 🎉 Hotovo!
Teraz máte plne funkčný Docker setup pre Ebook Translation System!
**Potrebujete pomoc?**
- Skontrolujte logy: `docker-compose logs -f`
- Prečítajte `COOLIFY_DEPLOYMENT.md` pre produkčné nasadenie
- Pozrite `NAVOD_SLOVENSKY.md` pre kompletný návod
**Happy coding! 🚀**