Setup - Infrastructure and Configurations¶
Bu bölüm, EnQualify back-office uygulamalarının Docker ve Windows IIS üzerinde kurulumu için gerekli adımları açıklamaktadır.
ℹ️ AI ve MediaServer bileşenlerinin kurulumu bu dokümanda yer almaz. İlgili kurulum adımları için bkz. AI Components dokümanı.
Setup With Docker Images¶
Docker Hub¶
EnQualify Docker image'ları Docker Hub üzerinde barındırılmaktadır.
- Private repository'lere erişim için bir kullanıcı hesabı gereklidir.
- Her image, versiyon numarasıyla etiketlenir (
tag).
| Bileşen | Docker Image |
|---|---|
| EnQualify Web API | docker.io/enqurainc/enqualify-api:tag |
| EnQualify Web UI | docker.io/enqurainc/enqualify-ui:tag |
| EnQualify Mobile API | docker.io/enqurainc/enqualify-mapi:tag |
| EnQualify Mobile API Proxy | docker.io/enqurainc/enqualify-mapip:tag |
| EnQualify Customer API | docker.io/enqurainc/enqualify-capi[customer]:tag |
| EnQualify Signalling | docker.io/enqurainc/enqualify-signalling:tag |
| EnQualify CoTurn | docker.io/enqurainc/enqualify-coturn:tag |
| EnQualify AI App | docker.io/enqurainc/enqualify-aiapp:tag |
| EnQualify Face Recognition | docker.io/enqurainc/enqualifyfacerecognition:tag |
| EnQualify Passive Liveness | docker.io/enqurainc/enqualifypassiveliveness:tag |
| EnQualify Utils | docker.io/enqurainc/enqualify-utils:tag |
Images¶
Linux Images¶
- Docker image'ları Red Hat Enterprise Linux Universal Base Image 8 (UBI8) + .NET 8 Runtime üzerine inşa edilmektedir.
- RHEL UBI8 .NET image'ı varsayılan olarak
id: 1001olan root-dışı (non-root) bir kullanıcıyla çalışır.
Referans: Red Hat UBI8 .NET Runtime — Red Hat Catalog
DockerFile¶
Aşağıdaki DockerFile, EnQualify Management API Docker image'ını oluşturmak için kullanılır:
dockerfile
FROM registry.redhat.io/ubi8/dotnet-80-runtime:latest
ADD Portable .
ADD FFmpeg ./FFmpeg
RUN mkdir ../logs
ADD appsettings.json .
EXPOSE 8080
ENV ASPNETCORE_URLS http://*:8080
CMD ["dotnet", "Enqura.EnVerify.API.Management.dll"]
Common File Paths¶
Tüm Docker image'larında ortak olarak kullanılan dosya yolları:
| Açıklama | Dosya Yolu |
|---|---|
| Application Root | /opt/app-root |
| Application Binaries | /opt/app-root/app |
| Application Settings | /opt/app-root/app/appsettings.json |
| Application DLL | /opt/app-root/app/Enqura.EnVerify.[application].dll |
| Application Logs | /opt/app-root/logs |
| File Share Binding | /opt/app-root/files |
Templates¶
Template dosyaları, Docker image kullanımını örneklemek amacıyla hazırlanmış örnek dosya setidir.
Template içeriği:
- Docker Compose dosyaları
- Boş
appsettings.jsondosyaları - Boş
LogsveFilesklasörleri - PowerShell build ve başlatma scriptleri
Önemli notlar:
- Port ve zorunlu ayarlar
ASPNETCORE_environment variable'ları veappsettings.jsoniçindekiKestrelbölümü üzerinden yapılandırılır. Detaylar için: Configure endpoints for ASP.NET Core Kestrel — Microsoft Learn - Zorunlu yapılandırma değişiklikleri
appsettings.jsondosyasına uygulanmalıdır. - Docker Compose dosyası;
Filesklasörünü File Share Binding,Logsklasörünü Application Logs veappsettings.json'u Application Settings olarak bağlar.
Build Script¶
Aşağıdaki PowerShell scripti, Windows ortamında Docker ile uygulamaları derleyip ayağa kaldırmak için kullanılır:
- Script çalıştırılmadan önce image tag bilgisi sorulur.
- Tag,
docker-compose buildkomutunaTAGbuild argument olarak iletilir ve DockerFile içinde referans alınır.
powershell
Add-Type -assembly "system.io.compression.filesystem"
$scriptpath = $MyInvocation.MyCommand.Definition
$folder = Split-Path $scriptpath
Write-host "EnQualify Template Images"
Write-host "Current Path: '$folder'"
Push-Location $folder
$tag = Read-Host -Prompt 'Base image Tag'
$up = Read-Host -Prompt 'Bring up containers? (Y/N)'
$Env:TAG=$tag
$buildCommand = 'docker-compose build --build-arg TAG=' + $tag
$upCommand = 'docker-compose up'
Write-Host "Building..."
Invoke-Expression -Command $buildCommand
Write-Host "Build completed."
if ($up -eq "Y" -or $up -eq "y"){
Write-Host "Bringing up..."
Invoke-Expression -Command $upCommand
}
Read-Host -Prompt 'Script finished.'
Docker Compose File¶
Aşağıdaki Docker Compose dosyası, local image build için template olarak kullanılır.
⚠️ Eğer CustomerAPI sağlanmıyorsa
enqualify-capiservisi Docker Compose dosyasından kaldırılmalıdır.
yaml
version: "3.9"
networks:
localdev:
name: localdev
services:
enqualify-api:
container_name: enqualify-api
image: enqurainc/enqualify-api:${TAG}
depends_on:
- enqualify-capi
restart: always
volumes:
- ./Logs:/opt/app-root/logs
- ./Files:/opt/app-root/files
- ./ManagementAPI/appsettings.json:/opt/app-root/app/appsettings.json
ports:
- "8081:8080"
networks:
- localdev
enqualify-ui:
container_name: enqualify-ui
image: enqurainc/enqualify-ui:${TAG}
depends_on:
- enqualify-api
restart: always
volumes:
- ./Logs:/opt/app-root/logs
- ./ManagementUI/appsettings.json:/opt/app-root/app/appsettings.json
ports:
- "8082:8080"
networks:
- localdev
enqualify-mapi:
container_name: enqualify-mapi
image: enqurainc/enqualify-mapi:${TAG}
restart: always
volumes:
- ./Logs:/opt/app-root/logs
- ./MobileAPI/appsettings.json:/opt/app-root/app/appsettings.json
ports:
- "8083:8080"
networks:
- localdev
enqualify-mapip:
container_name: enqualify-mapip
image: enqurainc/enqualify-mapip:${TAG}
depends_on:
- enqualify-mapi
restart: always
volumes:
- ./Logs:/opt/app-root/logs
- ./MobileAPIProxy/appsettings.json:/opt/app-root/app/appsettings.json
ports:
- "8084:8080"
networks:
- localdev
enqualify-capi:
container_name: enqualify-capi
image: enqurainc/enqualify-capi:${TAG}
restart: always
volumes:
- ./Logs:/opt/app-root/logs
- ./CustomerAPI/appsettings.json:/opt/app-root/app/appsettings.json
ports:
- "8085:8080"
networks:
- localdev
Local Builds¶
Docker image yapılandırması üzerinde daha fazla kontrol gerektiğinde, yalnızca uygulama binary'lerini içeren base Docker image'ları sağlanmaktadır. Bu base image'lar kullanılarak local Docker image'ları oluşturulabilir.
Setup On Windows with IIS¶
Application Files¶
Her uygulama aşağıdaki dosyalarla birlikte teslim edilir:
- Uygulama binary dosyaları
appsettings.jsonşablon dosyasıweb.configşablon dosyası
Setup IIS¶
- IIS Server Role'ü ekle.
- Windows Authentication'ı dahil et.
- .NET Hosting Bundle'ı yükle.
Referans: .NET Hosting Bundle — Microsoft Learn
Setup Applications¶
- Uygulama için bir klasör oluştur (örn.
C:\inetpub\wwwroot). - Uygulama binary dosyalarını kopyala.
appsettings.jsonşablon dosyasını kopyala ve düzenle.web.configşablon dosyasını kopyala ve düzenle.- Uygulama için IIS sitesi oluştur. Bu adımda uygulamayı başlatma.
- Local log dosyaları için bir klasör oluştur (örn.
C:\Logs). Application Pool Identity veya IIS varsayılan kullanıcısı için log klasörüne erişim haklarını kontrol et. - Sitenin Preload Enabled değerini
trueolarak ayarla. - Application Pool'un Start Mode değerini
AlwaysRunning, Idle Timeout değerini1440olarak ayarla.
Web API with Video Features Setup¶
- Shared file klasörünü hazırla. Application Pool Identity veya IIS varsayılan kullanıcısı için tam erişim haklarının verildiğini doğrula.
- Request size limit ayarlarını yapılandır. (Bkz. Web.Config Samples — Request Size Limit Settings)
AD Authentication Setup¶
- Application Pool Identity olarak bir AD Service Account kullan.
- Windows Authentication'ı etkinleştir.
appsettings.jsoniçindekiCorsOriginsayarına UI host adreslerini ekle.- Web UI uygulamasının
appsettings.jsondosyasındakiADAuthServiceBaseayarını güncelle.
Web.Config Samples¶
Common Settings¶
xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*"
modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\Enqura.EnVerify.API.Management.dll"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
hostingModel="outofprocess" />
</system.webServer>
</location>
</configuration>
Security Related Settings¶
xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>
Request Size Limit Settings¶
xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1000000000" />
</requestFiltering>
</security>
<serverRuntime uploadReadAheadSize="10485760" />
</system.webServer>
<system.web>
<httpRuntime maxRequestLength="1000000000" />
</system.web>
</location>
</configuration>
Windows Authentication Settings¶
xml