Skip to Content
АдминистраторамУстановкаЛокальный запуск микросервисов PrimoART в Docker (Windows) из пакета поставки

🛠️ Локальный запуск микросервисов PrimoART в Docker (Windows)

1. Подготовка архива

Загрузить архив PrimoART_Docker_dd_mm_yyyy на целевой сервер, разархивировать его и перейти в созданную директорию.


2. Загрузка Docker-образов

Перейти в каталог docker_images и загрузить все образы:

cd docker_images docker load -i <image_1> docker load -i <image_n> cd ..

3. Запуск хранилищ

docker compose -f docker-compose-storages.yml up -d

4. Настройка nginx

Добавить в файл volumes/nginx/nginx.conf новый location.

⚠️ Изменить <trace_viewer_url> на ваш адрес.

location /api/v1/trace-viewer-url { default_type application/json; return 200 '{"url":"https://<trace_viewer_url>:5173"}'; }

5. Запуск микросервисов

docker compose -f docker-compose-microservices.yml up -d

6. Выпуск самоподписанных сертификатов

Доступны два способа:

  • 6.1 mkcert (рекомендуется)
  • 6.2 PowerShell (без сторонних утилит)

6.1 mkcert

Установка mkcert

Вариант 1 — через Chocolatey

⚠️ Установка менеджера пакетов Chocolatey не описывается в данной инструкции.

choco install mkcert -y

Вариант 2 — вручную

  1. Скачать: https://github.com/FiloSottile/mkcert/releases
  2. Файл: mkcert-vX.X.X-windows-amd64.exe
  3. Переименовать в: mkcert.exe
  4. Поместить, например, в: C:\Tools\mkcert\
  5. Добавить в PATH (только для текущей сессии):
$env:Path += ";C:\Tools\mkcert"

Создание локального CA

⚠️ Запускать PowerShell от имени администратора.

mkcert -install mkcert -CAROOT
  • rootCA.pem — корневой сертификат
  • Его нужно установить в доверенные CA на клиентских машинах

Создание сертификатов

⚠️ Изменить <project_dir> на вашу директорию.

cd <project_dir> mkcert -cert-file volumes/certs/dev.crt -key-file volumes/certs/dev.key <portal_name> <portal_ip> mkcert -cert-file volumes/certs/dev_tv.crt -key-file volumes/certs/dev_tv.key <tv_name> <tv_ip>

6.2 PowerShell + (PowerShell 7+ || openssl)

⚠️ Запускать PowerShell от имени администратора.

Задать каталог сертификатов

⚠️ Изменить <project_dir> на вашу директорию.

$certDir = "<project_dir>\volumes\certs" New-Item -ItemType Directory -Force -Path $certDir | Out-Null

Создать локальный Root CA

$rootCert = New-SelfSignedCertificate ` -Type Custom ` -Subject "CN=Dev Local Root CA" ` -KeyAlgorithm RSA ` -KeyLength 4096 ` -HashAlgorithm SHA256 ` -KeyExportPolicy Exportable ` -KeyUsageProperty Sign ` -KeyUsage CertSign, CRLSign, DigitalSignature ` -TextExtension @("2.5.29.19={critical}{text}CA=true") ` -NotAfter (Get-Date).AddYears(10) ` -CertStoreLocation "Cert:\LocalMachine\My"

Экспорт Root CA (для клиентов)

Export-Certificate ` -Cert $rootCert ` -FilePath "$certDir\rootCA.cer" | Out-Null

Добавить Root CA в доверенные (не удаляя из My)

Import-Certificate ` -FilePath "$certDir\rootCA.cer" ` -CertStoreLocation "Cert:\LocalMachine\Root" | Out-Null

Проверки

Get-ChildItem Cert:\LocalMachine\My | Where-Object Thumbprint -eq $rootCert.Thumbprint
$rootCert.HasPrivateKey

Ожидается: True


Создание сертификатов, подписанных CA

Сертификат портала

$portalCert = New-SelfSignedCertificate ` -Type Custom ` -DnsName "<portal_name>", "localhost", "<portal_ip>" ` -Subject "CN=<portal_name>" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -HashAlgorithm SHA256 ` -KeyExportPolicy Exportable ` -Signer $rootCert ` -NotAfter (Get-Date).AddYears(3) ` -CertStoreLocation "Cert:\LocalMachine\My"

Сертификат TV

$tvCert = New-SelfSignedCertificate ` -Type Custom ` -DnsName "<tv_name>", "<tv_ip>" ` -Subject "CN=<tv_name>" ` -KeyAlgorithm RSA ` -KeyLength 2048 ` -HashAlgorithm SHA256 ` -KeyExportPolicy Exportable ` -Signer $rootCert ` -NotAfter (Get-Date).AddYears(3) ` -CertStoreLocation "Cert:\LocalMachine\My"

Экспорт в PFX

$password = ConvertTo-SecureString "1234" -AsPlainText -Force Export-PfxCertificate ` -Cert $portalCert ` -FilePath "$certDir\dev.pfx" ` -Password $password | Out-Null Export-PfxCertificate ` -Cert $tvCert ` -FilePath "$certDir\dev_tv.pfx" ` -Password $password | Out-Null

Экспорт сертификатов в CRT (PEM)

Портал

Export-Certificate ` -Cert $portalCert ` -FilePath "$certDir\dev.cer" | Out-Null certutil -encode ` "$certDir\dev.cer" ` "$certDir\dev.crt" | Out-Null

TV

Export-Certificate ` -Cert $tvCert ` -FilePath "$certDir\dev_tv.cer" | Out-Null certutil -encode ` "$certDir\dev_tv.cer" ` "$certDir\dev_tv.crt" | Out-Null

Экспорт приватных ключей в KEY (PEM)

6.2.1 PowerShell 7+

dev.key (портал)

$certDir = "<project_dir>\volumes\certs" $password = ConvertTo-SecureString "1234" -AsPlainText -Force $pfx = Get-PfxData -FilePath "$certDir\dev.pfx" -Password $password $certWithKey = $pfx.EndEntityCertificates[0] $rsa = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($certWithKey) $keyBytes = $rsa.ExportPkcs8PrivateKey() $base64 = [Convert]::ToBase64String($keyBytes) $pem = ($base64 -split "(.{1,64})" | Where-Object { $_ }) -join "`n" @" -----BEGIN PRIVATE KEY----- $pem -----END PRIVATE KEY----- "@ | Set-Content "$certDir\dev.key" -NoNewline

dev_tv.key (TV)

$certDir = "<project_dir>\volumes\certs" $password = ConvertTo-SecureString "1234" -AsPlainText -Force $pfxTv = Get-PfxData -FilePath "$certDir\dev_tv.pfx" -Password $password $certWithKeyTv = $pfxTv.EndEntityCertificates[0] $rsaTv = [System.Security.Cryptography.X509Certificates.RSACertificateExtensions]::GetRSAPrivateKey($certWithKeyTv) $keyBytesTv = $rsaTv.ExportPkcs8PrivateKey() $base64Tv = [Convert]::ToBase64String($keyBytesTv) $pemTv = ($base64Tv -split "(.{1,64})" | Where-Object { $_ }) -join "`n" @" -----BEGIN PRIVATE KEY----- $pemTv -----END PRIVATE KEY----- "@ | Set-Content "$certDir\dev_tv.key" -NoNewline

6.2.2 OpenSSL

Установка OpenSSL

Вариант 1 — через Chocolatey

choco install openssl -y

Вариант 2 — официальный инсталлятор

https://slproweb.com/products/Win32OpenSSL.html

Добавить в PATH (только для текущей сессии):

$env:Path += ";C:\Program Files\OpenSSL-Win64\bin"

Извлечь приватные ключи из PFX

⚠️ Изменить <project_dir> на вашу директорию.

cd <project_dir>\volumes\certs openssl pkcs12 -in dev.pfx -nocerts -nodes -out dev.key -passin pass:1234 openssl pkcs12 -in dev_tv.pfx -nocerts -nodes -out dev_tv.key -passin pass:1234

✔️ Результат

В каталоге <project_dir>\volumes\certs будут:

  • rootCA.pem
  • dev.cer
  • dev.crt
  • dev.key
  • dev.pfx
  • dev_tv.cer
  • dev_tv.crt
  • dev_tv.key
  • dev_tv.pfx

Не требуются для работы микросервисов:

  • dev.pfx
  • dev_tv.pfx
  • dev_tv.cer
  • dev.cer
  • rootCA.cer

⚠️ rootCA.cer — корневой сертификат. Его нужно установить в доверенные CA на клиентских машинах.


7. Запуск trace-viewer

docker compose -f docker-compose-tv.yml up -d

8. Запуск UI

docker compose -f docker-compose-portal.yml up -d

✔️ Проверка работы UI

Откройте в браузере:

https://<host_address>:8443
Last updated on