# 🐳 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 ``` ### **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 # 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! 🚀**