Přeskočit obsah

Docker Compose — nasazení

Systém EVA se nasazuje jako sada Docker kontejnerů.


Kontejnery

Kontejner Image Port Popis
api xtracebartech/bartech-api-eva:VERSION 8080, 8081 REST API
web xtracebartech/bartech-web-eva:VERSION 8080 Blazor Manager
db xtracebartech/bartech-db-eva:VERSION 5432 PostgreSQL 17
print (volitelné) xtracebartech/bartech-print-eva:VERSION Tisková fronta

Compose soubory

Soubor Účel
docker-compose.yml Lokální vývoj (všechny 3 služby)
.docker/compose-EVA-xtdocker-deploy.yaml Produkce (3 služby bez Print)
.docker/compose-EVA-xtdocker-deploy_with_Print.yaml Produkce (4 služby včetně Print)

Produkční nasazení

1. Příprava .env souboru

Vytvořte .env soubor vedle compose souboru:

DB_HOST=db
DB_PORT=5432
DB_PASSWORD=VašeHesloPostgres
EMAIL_PASSWORD=VašeHesloSMTP
ASPNETCORE_ENVIRONMENT=Docker
DevExpress_License=VášLicenčníKlíčDevExpress
JWT_SECRET_KEY=MinimálněDvacetDvaZnaků!Produkce

# AI Chat (Eva.Manager) — bez klíče AI Chat nefunguje, aplikace startuje normálně
AI_API_KEY=sk-proj-...
# Volitelné — výchozí hodnoty jsou OpenAI / gpt-4o-mini
# AI_PROVIDER=OpenAI
# AI_MODEL=gpt-4o-mini

Upozornění: Pokud AI_API_KEY není nastaven, AI Chat asistent (/ai-chat) nebude funkční. Aplikace Eva.Manager nastartuje bez chyby, ale požadavky na AI budou odmítnuty s chybovou hláškou. Stav lze ověřit přes endpoint /ai/status.

2. Spuštění

docker-compose -f .docker/compose-EVA-xtdocker-deploy.yaml up -d

3. Ověření

# Stav kontejnerů
docker-compose ps

# Logy API
docker-compose logs api

# Health check
curl http://localhost:8080/health

# Stav AI konfigurace (Eva.Manager)
curl http://localhost:8080/ai/status

Build Docker images

Dockerfiles jsou v .docker/, build skripty v scripts/:

# Build všech images
./scripts/build-all.ps1 -Version 1.29

# Nebo jednotlivě
docker build -f .docker/Dockerfile_WEB -t xtracebartech/bartech-web-eva:1.29 .
docker build -f .docker/Dockerfile_API -t xtracebartech/bartech-api-eva:1.29 .
docker build -f .docker/Dockerfile_DB  -t xtracebartech/bartech-db-eva:1.29  .

Data Protection (důležité!)

Blazor Manager používá ASP.NET Data Protection pro šifrování cookies. Klíče musí být persistovány mimo kontejner, jinak jsou uživatelé odhlašeni po každém restartu.

# V compose souboru
services:
  web:
    volumes:
      - manager_dp_keys:/app/dataprotection-keys

volumes:
  manager_dp_keys:

Docker Healthcheck

Oba aplikační kontejnery (api, web) mají konfigurovaný healthcheck na endpointu /health:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s

Omezení paměti

Kontejner webové administrace (Blazor + DevExpress Reporting) je paměťově náročnější:

services:
  web:
    deploy:
      resources:
        limits:
          memory: 1536M   # Doporučeno při použití reportů
        reservations:
          memory: 512M

Minimální limit pro základní provoz: 768 MB. Pro generování PDF reportů doporučeno 1 536 MB.