456 lines
10 KiB
Markdown
456 lines
10 KiB
Markdown
# 🐳 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! 🚀**
|