10 KiB
10 KiB
🐳 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
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
# 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
# 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
.envsú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:
- Nahrajte projekt do Git repozitára (GitHub/GitLab)
- V Coolify vytvorte nový "Docker Compose" resource
- Pripojte Git repozitár
- Nastavte environment variables
- Nakonfigurujte doménu + SSL
- Deploy!
🛠️ Použitie docker-start.sh skriptu
./docker-start.sh
Menu options:
- Spustiť celý systém - Build + štart (prvé spustenie)
- Spustiť systém - Bez rebuild (rýchlejšie)
- Zastaviť systém - Vypne všetky kontajnery
- Reštartovať systém - Reštart bez rebuild
- Zobraziť logy - Real-time logy
- Stav kontajnerov - Prehľad stavu a resources
- Vyčistiť všetko - Zmaže kontajnery, volumes, dáta (POZOR!)
- Zálohovať databázu - Vytvorí SQL dump
- Ukončiť - Exit zo skriptu
📋 Docker Compose Príkazy
Základné operácie:
# 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:
# 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:
# Stav kontajnerov
docker-compose ps
# Resource usage
docker stats
# Detail o kontajneri
docker inspect <container-name>
Databáza:
# 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:
# 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:
# 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:
# 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_ORIGINSna vašu doménu - Použite silné heslá (min. 16 znakov)
.envsúbor NIKDY nedávajte do Gitu- Použite HTTPS v produkcii
.gitignore:
Uistite sa že .env je v .gitignore:
# 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í:
# 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á:
# 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ý:
# 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:
# 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:
# 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:
# 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:
# 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:
docker-compose restart backend
📖 Ďalšie Návody
NAVOD_SLOVENSKY.md- Kompletný slovenský návodCOOLIFY_DEPLOYMENT.md- Deployment na CoolifySYSTEM_DOCUMENTATION.md- Technická dokumentáciaREADME.md- Anglická dokumentácia
✅ Quick Checklist
Prvé spustenie:
- Docker a Docker Compose nainštalované
.envsúbor vytvorený z.env.production- Heslá a SECRET_KEY zmenené
docker-compose up -d --buildspustené- 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
.envsúbor v.gitignoreDEBUG=falsev 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.mdpre produkčné nasadenie - Pozrite
NAVOD_SLOVENSKY.mdpre kompletný návod
Happy coding! 🚀