Przejdź do głównej zawartości
Wersja: 2026 R1

Konfiguracja Docker

Ten rozdział opisuje konfigurację docker-compose dołączoną do projektu AI Proxy, która umożliwia uruchomienie usługi lokalnie lub w kontenerze deweloperskim. Rozwiązanie Docker jest szczególnie przydatne dla:

  • lokalnego rozwoju bez pełnej infrastruktury Azure,
  • środowisk testowych,
  • wdrożeń Self-hosted,
  • demonstracji i prototypowania.

Dostępne warianty Docker Compose

W katalogu scripts/docker/ znajdują się następujące warianty plików docker-compose:

  • docker-compose-basic-pem.yml - podstawowa konfiguracja używająca certyfikatu w formacie PEM,
  • docker-compose-basic-pfx.yml - podstawowa konfiguracja używająca certyfikatu w formacie PFX,
  • docker-compose-applicationinsights.yml - konfiguracja z integracją Application Insights do monitorowania.

Struktura usługi AI-proxy

Główna usługa Docker dla AI Proxy zawiera następujące elementy:

Obraz

image: docker-dev.webcon.pl/webcon/aiproxy:<version_tag>

lub dla lokalnych buildów:

image: localbuild

Nazwa kontenera

container_name: ai-proxy

Polityka restartu

restart: unless-stopped

Kontener automatycznie restartuje się w przypadku awarii, chyba że został zatrzymany ręcznie.

Konfiguracja Portów

ports:
- "5298:8080" # HTTP
- "7033:8081" # HTTPS
informacja
  • Port hosta 5298 jest mapowany na port kontenera 8080 (HTTP).
  • Port hosta 7033 jest mapowany na port kontenera 8081 (HTTPS).
  • Dostosuj porty hosta, jeśli kolidują z innymi usługami na maszynie.

Zmienne środowiskowe

Docker Compose ustawia następujące zmienne środowiskowe dla kontenera:

Podstawowe Zmienne

environment:
- ASPNETCORE_ENVIRONMENT=Production
- AppConfiguration__SelfHosted__Certificate__Path=/app/https/certificate.pem
- Logging__LogLevel__Default=Information
- Logging__LogLevel__Microsoft=Warning

Opis zmiennych:

  • ASPNETCORE_ENVIRONMENT - środowisko ASP.NET Core (Development, Staging, Production),
  • AppConfiguration__SelfHosted__Certificate__Path - ścieżka do certyfikatu TLS wewnątrz kontenera,
  • Logging__LogLevel__Default- domyślny poziom logowania,
  • Logging__LogLevel__Microsoft - poziom logowania dla namespace'ów Microsoft.

Zmienne dla trybu Self-hosted

Dla uruchomienia w trybie Self-hosted, dodaj:

environment:
- AppConfiguration__SelfHosted__Enabled=true
- AppConfiguration__UseAzureKeyVault=false

Woluminy (volumes)

Woluminy montują pliki z hosta do kontenera.

Certyfikat TLS (PEM)

volumes:
- ./certificates/certificate.pem:/app/https/certificate.pem:ro

Certyfikat TLS (PFX)

volumes:
- ./certificates/certificate.pfx:/app/https/certificate.pfx:ro
informacja
  • :ro oznacza read-only (tylko do odczytu).
  • Upewnij się, że plik certyfikatu istnieje w katalogu ./certificates/ przed uruchomieniem kontenera.

Plik konfiguracyjny AI

volumes:
- ./aiconfiguration.json:/app/aiconfiguration.json:ro
informacja
  • Gdy UseAzureKeyVault = true, plik musi zawierać nazwy sekretów Key Vault (NIE rzeczywiste klucze).
  • Gdy UseAzureKeyVault = false, plik musi zawierać wszystkie wymagane sekrety (tylko dla środowisk lokalnych/testowych).

Przykładowa konfiguracja Docker Compose

Wariant z Certyfikatem PEM

version: '3.8'

services:
ai-proxy:
image: localbuild
container_name: ai-proxy
restart: unless-stopped
ports:
- "5298:8080"
- "7033:8081"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- AppConfiguration__SelfHosted__Enabled=true
- AppConfiguration__SelfHosted__Certificate__Path=/app/https/certificate.pem
- AppConfiguration__UseAzureKeyVault=false
- Logging__LogLevel__Default=Information
- Logging__LogLevel__Microsoft=Warning
volumes:
- ./certificates/certificate.pem:/app/https/certificate.pem:ro
- ./aiconfiguration.json:/app/aiconfiguration.json:ro

Wariant z Certyfikatem PFX

version: '3.8'

services:
ai-proxy:
image: localbuild
container_name: ai-proxy
restart: unless-stopped
ports:
- "5298:8080"
- "7033:8081"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- AppConfiguration__SelfHosted__Enabled=true
- AppConfiguration__SelfHosted__Certificate__Path=/app/https/certificate.pfx
- AppConfiguration__SelfHosted__Certificate__Password=YourCertificatePassword
- AppConfiguration__UseAzureKeyVault=false
- Logging__LogLevel__Default=Information
volumes:
- ./certificates/certificate.pfx:/app/https/certificate.pfx:ro
- ./aiconfiguration.json:/app/aiconfiguration.json:ro

Uruchamianie Docker Compose

Przygotowanie środowiska

Przed uruchomieniem kontenera upewnij się, że:

  1. Docker Desktop (lub Docker Engine) jest uruchomiony.
  2. Pliki certyfikatu istnieją - ./certificates/certificate.pem lub ./certificates/certificate.pfx.
  3. Plik konfiguracyjny AI ./aiconfiguration.json istnieje i zawiera poprawną konfigurację (nazwy sekretów Key Vault lub rzeczywiste wartości w trybie offline).
  4. Porty 5298 i 7033 są dostępne.

Uruchomienie z repozytorium

Z katalogu głównego repozytorium (gdzie znajduje się folder scripts):

cd .\scripts\docker
docker-compose -f docker-compose-basic-pem.yml up -d

lub dla wersji z PFX:

docker-compose -f docker-compose-basic-pfx.yml up -d

Sprawdzanie logów

Aby zobaczyć logi w czasie rzeczywistym:

docker-compose logs -f ai-proxy

Aby zobaczyć ostatnie logi:

docker-compose logs --tail=100 ai-proxy

Zatrzymanie i usunięcie kontenerów

docker-compose down

Aby dodatkowo usunąć woluminy:

docker-compose down -v

Generowanie certyfikatów testowych

Dla środowisk deweloperskich możesz wygenerować self-signed certyfikat.

Generowanie certyfikatu PEM (Linux/macOS/PowerShell)

# Generowanie klucza prywatnego i certyfikatu
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

# Połączenie w jeden plik
cat key.pem cert.pem > certificate.pem

# Przeniesienie do katalogu certificates
mv certificate.pem ./certificates/

Generowanie certyfikatu PFX (Windows/PowerShell)

# Generowanie certyfikatu używając PowerShell
$cert = New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1)

# Eksport do PFX
$password = ConvertTo-SecureString -String "YourPassword123" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\certificates\certificate.pfx" -Password $password

Rozwiązywanie problemów Docker

Problem:
Kontener nie startuje.

Objawy:

  • kontener zatrzymuje się natychmiast po uruchomieniu,
  • brak odpowiedzi na portach 5298/7033.

Rozwiązanie:

# Sprawdź logi kontenerа
docker-compose logs ai-proxy

# Sprawdź status kontenera
docker ps -a

# Sprawdź konfigurację
docker inspect ai-proxy

Typowe przyczyny:

  • brakujący plik certyfikatu,
  • nieprawidłowa ścieżka do certyfikatu w zmiennej środowiskowej,
  • błędy w pliku aiconfiguration.json,
  • porty są zajęte na hoście.

Problem:
Błąd dostępu do plików

Objawy:

  • błędy o braku uprawnień do odczytu plików,
  • kontener nie może załadować certyfikatu lub konfiguracji.

Rozwiązanie:

# Sprawdź uprawnienia do plików
Get-Acl .\certificates\certificate.pem

# Sprawdź ustawienia Docker Desktop
# Docker Desktop > Settings > Resources > File Sharing
# Dodaj katalog projektu do udostępnionych

Problem:
Porty zajęte

Objawy:

  • błąd podczas uruchamiania: "port is already allocated".

Rozwiązanie:

# Znajdź proces używający portu
netstat -ano | findstr :7033

# Zatrzymaj proces lub zmień porty w docker-compose.yml
ports:
- "5299:8080" # Zmieniony port hosta
- "7034:8081" # Zmieniony port hosta

Problem:
Błędy certyfikatu SSL

Objawy:

  • błędy SSL/TLS podczas próby połączenia,
  • przeglądarka pokazuje ostrzeżenie o certyfikacie.

Rozwiązanie:

# Zweryfikuj format certyfikatu
openssl x509 -in ./certificates/certificate.pem -text -noout

# Upewnij się, że ścieżka w zmiennej środowiskowej jest poprawna
# Sprawdź, czy kontener widzi plik
docker exec ai-proxy ls -l /app/https/

Problem:
Błędy konfiguracji AI

Objawy:

  • aplikacja startuje, ale nie może połączyć się z dostawcami AI,
  • błędy w logach o brakujących sekretach.

Rozwiązanie:

# Sprawdź zawartość pliku konfiguracji
cat .\aiconfiguration.json

# Zweryfikuj, czy:
# 1. UseAzureKeyVault=false w trybie Self-hosted
# 2. Wszystkie wymagane sekrety są w pliku
# 3. Format JSON jest poprawny

# Zrestartuj kontener po poprawkach
docker-compose restart ai-proxy

Lista kontrolna przed uruchomieniem

  • Docker Desktop/Engine jest uruchomiony.
  • Plik ./certificates/certificate.pem lub .pfx istnieje i jest poprawny.
  • Plik ./aiconfiguration.json istnieje i zawiera poprawną konfigurację.
  • Sekrety w konfiguracji odpowiadają trybowi pracy(UseAzureKeyVault=false dla Self-hosted).
  • Porty 5298 i 7033 są wolne (lub dostosowano mapowanie w docker-compose.yml).
  • Zmienne środowiskowe są poprawnie ustawione.
  • Ścieżki do woluminów są poprawne.

Monitorowanie kontenerów

Podstawowe metryki

# Status kontenerów
docker ps

# Użycie zasobów
docker stats ai-proxy

# Procesy w kontenerze
docker top ai-proxy

# Inspekcja szczegółowa
docker inspect ai-proxy

Integracja z Application Insights

Dla pełnego monitorowania, użyj wariantu z Application Insights:

environment:
- ApplicationInsights__ConnectionString=${APP_INSIGHTS_CONNECTION_STRING}

Backup i Recovery

Backup konfiguracji

# Backup plików konfiguracyjnych
$backupDate = Get-Date -Format "yyyyMMdd"
Copy-Item .\aiconfiguration.json ".\backups\aiconfiguration_$backupDate.json"
Copy-Item .\certificates\* ".\backups\certificates_$backupDate\"

Restore konfiguracji

# Przywracanie z backupu
$restoreDate = "20260115"
Copy-Item ".\backups\aiconfiguration_$restoreDate.json" .\aiconfiguration.json
Copy-Item ".\backups\certificates_$restoreDate\*" .\certificates\