Files
ebook-extension/DOCKER_README.md

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

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

./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:

# 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_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:

# 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á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! 🚀