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_KEYnení nastaven, AI Chat asistent (/ai-chat) nebude funkční. AplikaceEva.Managernastartuje 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í¶
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.