Initial commit: Ebook Translation System with Docker setup
This commit is contained in:
455
DOCKER_README.md
Normal file
455
DOCKER_README.md
Normal 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! 🚀**
|
||||
Reference in New Issue
Block a user