Přeskočit obsah

Nasazení (Docker)

Viz Provoz a nasazení pro kompletní dokumentaci Docker Compose a produkčního nasazení.


Produkční nasazení PWA (meva.xtrace.cz)

Od v1.0.43 běží první produkční instance Eva.Mobile.Pwa. Zdroj: doc/publikace_pwa.md.

Co Server Port
Reverzní proxy (nginx) 192.168.4.67 80/443
Aplikační server (Docker, eva-pwa) 192.168.4.25 8083
Eva Manager (web) 192.168.4.25 8080
Eva API (restapi) 192.168.4.25 8082

Tok požadavku:

Prohlížeč → meva.xtrace.cz → nginx 4.67:443 → 192.168.4.25:8083 (eva-pwa) → /api/* proxied na 192.168.4.25:8082 (eva-api)

Build image:

docker build -f .docker/Dockerfile_PWA -t xtracebartech/bartech-pwa-eva:latest .

.docker/Dockerfile_PWA má dvě fáze: dotnet publish Eva.Mobile.Pwa -c Release → statické soubory zkopírované do nginx:alpine image spolu s .docker/nginx-pwa-prod.conf (produkční nginx konfig kontejneru — bez SSL, Blazor-Environment: Production, /api/ proxy na interní eva-api:8080). SSL terminuje až reverzní proxy na 192.168.4.67.

Kontejner pwa se přidává do ~/compose-EVA-xtdocker-deploy.yaml na serveru 4.25 (depends_on: [restapi], port 8083:80).

SSL certifikát eva_bundle.pem na 4.67 pokrýval původně jen eva.xtrace.cz — pro produkční PWA byl rozšířen (nový CSR ze stávajícího privátního klíče) o SAN meva.xtrace.cz, se zachováním eva.inventura-majetku.cz a demo.inventura-majetku.cz.

Individuální build skript

EvaPwa_DockerBuildAndPushNewVersion.ps1 (v kořeni repozitáře) umožňuje vydat pouze PWA image bez přestavby WEB/API/DB/Print. EvaAll_DockerBuildAndPush.ps1 nyní obsahuje i bartech-pwa-eva jako součást all-in-one publikace.


Přehled kontejnerů

┌─────────────────────────────────────────────────────┐
│                   Docker Compose                     │
│                                                      │
│  ┌──────────┐   ┌──────────┐   ┌──────────────────┐│
│  │   api    │   │   web    │   │        db        ││
│  │  :8080   │   │  :8080   │   │  PostgreSQL 17   ││
│  │  :8081   │   │          │   │     :5432        ││
│  └──────────┘   └──────────┘   └──────────────────┘│
│                                                      │
│  (volitelně) ┌──────────┐                           │
│              │  print   │                           │
│              └──────────┘                           │
└─────────────────────────────────────────────────────┘

Všechny kontejnery běží pod neprivilegovaným uživatelem (nonrootuser, UID 1000).


Prostředí

Hodnota ASPNETCORE_ENVIRONMENT Popis
Development Lokální vývoj — Swagger, detailní logy
Docker Docker Compose — env var substituce v appsettings
Production Produkce — minimální logy, bez Swagger

Diagnostický endpoint /ai/status

Eva.Manager (kontejner web) exponuje anonymní diagnostický endpoint pro ověření stavu AI konfigurace:

GET /ai/status

Příklad odpovědi:

{
  "configured": true,
  "keyPrefix": "sk-proj-",
  "provider": "OpenAI",
  "model": "gpt-4o-mini",
  "clientType": "OpenAIChatClient",
  "timestamp": "2026-05-25T10:30:00Z"
}

Pokud API klíč chybí, configured bude false a clientType bude DisabledChatClient. Endpoint je dostupný bez autentizace a slouží výhradně pro provozní diagnostiku.

# Ověření z příkazové řádky
curl http://localhost:8080/ai/status

Viz také Konfigurace AI Chat pro popis env proměnných a priority konfigurace.