Запуск DPA через docker compose

DPA проектировалась как платформа, способная работать в различных инфраструктурных условиях — от пилотного развертывания до крупных распределённых производственных систем.

Ниже приведены три типовых сценария установки в Docker Compose. Каждый из них отражает реальную практику внедрений и может использоваться в промышленной эксплуатации:

  1. Все сервисы на одном сервере.
  2. DPA с внешней базой данных.
  3. Разделение DPA Server и DPA Host

Системные требования

  • Docker Engine 24+ и Docker Compose v2.
  • Открытые порты между узлами:
    • 5432/tcp для PostgreSQL.
    • 45616/tcp для gRPC DPA Server.
    • 45619/tcp для транспорта DPA Host (при разнесении Server/Host по разным машинам).
    • 6216/tcp и 6217/tcp для веб-интерфейса DPA Host.
  • Каталоги для постоянных данных:
    • /usr/share/X-tensive для сервисов DPA.
    • /var/lib/postgresql/data для PostgreSQL.
Все сервисы на одном сервере

DPA Host, DPA Server, микросервисы и PostgreSQL разворачиваются в рамках одного docker-compose проекта на одном физическом или виртуальном сервере. Архитектура максимально компактна: все контейнеры работают на одном узле, взаимодействуют через внутреннюю Docker-сеть, а база данных размещена локально для данного проекта.

Такой сценарий подходит для тестовых и демонстрационных развертываний, пилотных проектов, а также для небольших производственных площадок. Он требует минимальной сетевой настройки и практически не зависит от внешней инфраструктуры предприятия. Установка, обновление и резервное копирование в этом случае упрощены — вся система сосредоточена на одном сервере.

Ограничением является масштабируемость, которая определяется ресурсами выбранного узла. При росте количества подключенного оборудования или увеличении нагрузки потребуется более производительный сервер. Тем не менее, данный вариант полностью пригоден для промышленной эксплуатации при умеренной нагрузке и часто используется как рабочая конфигурация на небольших предприятиях.

Файл .env

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
COMPOSE_PROJECT_NAME=dpa
DPA_VERSION=6.9.5
TZ=Europe/Moscow
SYSTEM_LOCALE=ru-RU

DPA_DATA_PATH=./dpa-data
POSTGRES_DATA_PATH=./postgres-data/16

HOST_HTTP_PORT=80
HOST_HTTPS_PORT=443

POSTGRES_HOST=dpa-postgres
POSTGRES_PORT=5432
POSTGRES_ADMIN_USER=postgres
POSTGRES_ADMIN_PASSWORD=postgres
POSTGRES_MULTIPLE_DATABASES=dpa_host,dpa_audit,dpa_toolmanagement,dpa_messenger,dpa_kpi

DPA_SERVER_ADDRESS=dpa-server
DPA_HOST_ADDRESS=dpa-host

DPA_AUDIT_ADDRESS=dpa-audit
DPA_AUDIT_PORT=5880
DPA_KPI_ADDRESS=dpa-kpi
DPA_KPI_PORT=5780
DPA_MESSENGER_ADDRESS=dpa-messenger
DPA_MESSENGER_PORT=6080
DPA_TOOLMANAGEMENT_ADDRESS=dpa-toolmanagement
DPA_TOOLMANAGEMENT_PORT=6180
DPA_VNC_ADDRESS=dpa-vnc
DPA_VNC_PORT=5980

Файл docker-compose.yml

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
services:
  dpa-postgres:
    image: xtensive/dpa-postgres:16
    ports:
      - "5432:5432"
    environment:
      POSTGRES_MULTIPLE_DATABASES: ${POSTGRES_MULTIPLE_DATABASES}
      PGUSER: ${POSTGRES_ADMIN_USER}
      POSTGRES_USER: ${POSTGRES_ADMIN_USER}
      POSTGRES_PASSWORD: ${POSTGRES_ADMIN_PASSWORD}
      TZ: ${TZ}
    volumes:
      - ${POSTGRES_DATA_PATH}:/var/lib/postgresql/data
    restart: unless-stopped
    logging:
      driver: "local"
    stop_grace_period: 2m
    healthcheck:
      test: ["CMD-SHELL", "pg_isready"]
      interval: 30s
      timeout: 5s
      retries: 5

  dpa-server:
    image: xtensive/dpa-server:${DPA_VERSION}
    environment:
      - TZ=${TZ}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    ports:
      - "45616:45616"
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-host:
    image: xtensive/dpa-host:${DPA_VERSION}
    ports:
      - "${HOST_HTTP_PORT}:6216"
      - "${HOST_HTTPS_PORT}:6217"
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - DatabaseConnection__ConnectionString=Host=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_host;User ID=dpa_host;Password=dpa_host;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
      - SystemLocale=${SYSTEM_LOCALE}
      - DefaultDpaServerAddress=${DPA_SERVER_ADDRESS}
      - DefaultHostAddress=${DPA_HOST_ADDRESS}
      - Microservices__ToolManagement__Address=${DPA_TOOLMANAGEMENT_ADDRESS}
      - Microservices__ToolManagement__Port=${DPA_TOOLMANAGEMENT_PORT}
      - Microservices__Messenger__Address=${DPA_MESSENGER_ADDRESS}
      - Microservices__Messenger__Port=${DPA_MESSENGER_PORT}
      - Microservices__Kpi__Address=${DPA_KPI_ADDRESS}
      - Microservices__Kpi__Port=${DPA_KPI_PORT}
      - Microservices__Vnc__Address=${DPA_VNC_ADDRESS}
      - Microservices__Vnc__Port=${DPA_VNC_PORT}
      - Microservices__Audit__Address=${DPA_AUDIT_ADDRESS}
      - Microservices__Audit__Port=${DPA_AUDIT_PORT}
    depends_on:
      dpa-postgres:
        condition: service_healthy
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-audit:
    image: xtensive/dpa-audit:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_AUDIT_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_audit;User Id=dpa_audit;Password=dpa_audit;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    depends_on:
      dpa-postgres:
        condition: service_healthy
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-kpi:
    image: xtensive/dpa-kpi:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_KPI_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_kpi;User Id=dpa_kpi;Password=dpa_kpi;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    depends_on:
      dpa-postgres:
        condition: service_healthy
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-messenger:
    image: xtensive/dpa-messenger:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_MESSENGER_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_messenger;User Id=dpa_messenger;Password=dpa_messenger;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    depends_on:
      dpa-postgres:
        condition: service_healthy
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-toolmanagement:
    image: xtensive/dpa-toolmanagement:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_TOOLMANAGEMENT_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_toolmanagement;User Id=dpa_toolmanagement;Password=dpa_toolmanagement;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    depends_on:
      dpa-postgres:
        condition: service_healthy
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-vnc:
    image: xtensive/dpa-vnc:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_VNC_PORT}
      - TZ=${TZ}
    restart: unless-stopped
    logging:
      driver: "local"

Запуск: docker compose up -d

DPA с внешней базой данных

DPA Host, DPA Server и микросервисы продолжают работать в Docker, однако PostgreSQL размещается отдельно — как правило, на сервере базы данных, предоставленном заказчиком. В этом случае DPA подключается к внешнему экземпляру БД через сетевое соединение, а администрирование, резервное копирование и мониторинг базы данных выполняются ИТ-службой предприятия.

Такой подход применяется в организациях, где инфраструктура БД централизована и действует политика управления корпоративными сервисами. DPA интегрируется в существующую ИТ-среду, не создавая изолированного контура хранения данных. Это повышает управляемость со стороны заказчика и упрощает соблюдение внутренних регламентов.

С точки зрения архитектуры решение остаётся простым, однако требует корректной настройки сетевого доступа и учёта требований к производительности внешнего сервера БД. Данный сценарий является типовым для продакшн-развертываний среднего масштаба, где важна интеграция с корпоративной инфраструктурой, но нет необходимости физически разделять производственную и офисную сети.

В dpa-host и микросервисах укажите внешний хост БД, например:

  • POSTGRES_HOST=10.20.30.40
  • POSTGRES_PORT=5432

Требования к внешней БД:

  • Созданы базы: dpa_host, dpa_audit, dpa_toolmanagement, dpa_messenger, dpa_kpi.
  • Созданы соответствующие пользователи с правами на свои базы.
  • Разрешены подключения с узлов, где работают DPA-контейнеры.

Минимальный docker-compose.yml для DPA без PostgreSQL:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
services:
  dpa-server:
    image: xtensive/dpa-server:${DPA_VERSION}
    environment:
      - TZ=${TZ}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    ports:
      - "45616:45616"
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-host:
    image: xtensive/dpa-host:${DPA_VERSION}
    ports:
      - "${HOST_HTTP_PORT}:6216"
      - "${HOST_HTTPS_PORT}:6217"
      - "45619:45619"
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - DatabaseConnection__ConnectionString=Host=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_host;User ID=dpa_host;Password=dpa_host;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
      - SystemLocale=${SYSTEM_LOCALE}
      - DefaultDpaServerAddress=${DPA_SERVER_ADDRESS}
      - DefaultHostAddress=${DPA_HOST_ADDRESS}
      - Microservices__ToolManagement__Address=${DPA_TOOLMANAGEMENT_ADDRESS}
      - Microservices__ToolManagement__Port=${DPA_TOOLMANAGEMENT_PORT}
      - Microservices__Messenger__Address=${DPA_MESSENGER_ADDRESS}
      - Microservices__Messenger__Port=${DPA_MESSENGER_PORT}
      - Microservices__Kpi__Address=${DPA_KPI_ADDRESS}
      - Microservices__Kpi__Port=${DPA_KPI_PORT}
      - Microservices__Vnc__Address=${DPA_VNC_ADDRESS}
      - Microservices__Vnc__Port=${DPA_VNC_PORT}
      - Microservices__Audit__Address=${DPA_AUDIT_ADDRESS}
      - Microservices__Audit__Port=${DPA_AUDIT_PORT}
    restart: unless-stopped
    logging:
      driver: "local"

Остальные микросервисы подключаются так же, как в сценарии 1, только с внешними POSTGRES_HOST/POSTGRES_PORT.

Разделение DPA Server и DPA Host

Архитектурное разделение компонентов системы: DPA Server размещается в производственной (цеховой) сети и взаимодействует с оборудованием напрямую, а DPA Host и микросервисы разворачиваются в корпоративной сети предприятия. Между сетями, как правило, устанавливается межсетевой экран с контролем трафика, а в отдельных случаях — однонаправленный шлюз (инфодиод).

Такое разделение отражает реальные требования промышленной инфраструктуры. Производственная сеть изолирована и защищена от внешнего доступа, в ней отсутствуют случайные абоненты и сторонние сервисы. DPA Server выполняет сбор и нормализацию данных, после чего передаёт их в DPA Host, где осуществляется хранение, аналитика и взаимодействие с пользователями и внешними системами.

Архитектура позволяет масштабировать систему горизонтально: к одному DPA Host может быть подключено несколько DPA Server. На практике один DPA Server рекомендуется использовать для подключения порядка 100 станков, однако при достаточных ресурсах возможна работа и с существенно большим количеством оборудования. При расширении проекта новые серверы могут добавляться по территориальному принципу или по группам оборудования.

Этот вариант рекомендуется для средних и крупных внедрений, где важны сегментация сети, информационная безопасность и возможность масштабирования. Он обеспечивает устойчивую архитектуру, соответствующую требованиям промышленной ИБ и корпоративной инфраструктуры.

Машина A — DPA Server

docker-compose.yml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
services:
  dpa-server:
    image: xtensive/dpa-server:${DPA_VERSION}
    environment:
      - TZ=${TZ}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    ports:
      - "45616:45616"
    restart: unless-stopped
    logging:
      driver: "local"

Машина B — DPA Host и микросервисы

docker-compose.yml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
services:
  dpa-host:
    image: xtensive/dpa-host:${DPA_VERSION}
    ports:
      - "${HOST_HTTP_PORT}:6216"
      - "${HOST_HTTPS_PORT}:6217"
      - "45619:45619"
      - "1000-1010:1000-1010/tcp"
      - "1000-1010:1000-1010/udp"
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - DatabaseConnection__ConnectionString=Host=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_host;User ID=dpa_host;Password=dpa_host;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
      - SystemLocale=${SYSTEM_LOCALE}
      - DefaultDpaServerAddress=${DPA_SERVER_ADDRESS}
      - DefaultHostAddress=${DPA_HOST_ADDRESS}
      - Microservices__ToolManagement__Address=${DPA_TOOLMANAGEMENT_ADDRESS}
      - Microservices__ToolManagement__Port=${DPA_TOOLMANAGEMENT_PORT}
      - Microservices__Messenger__Address=${DPA_MESSENGER_ADDRESS}
      - Microservices__Messenger__Port=${DPA_MESSENGER_PORT}
      - Microservices__Kpi__Address=${DPA_KPI_ADDRESS}
      - Microservices__Kpi__Port=${DPA_KPI_PORT}
      - Microservices__Vnc__Address=${DPA_VNC_ADDRESS}
      - Microservices__Vnc__Port=${DPA_VNC_PORT}
      - Microservices__Audit__Address=${DPA_AUDIT_ADDRESS}
      - Microservices__Audit__Port=${DPA_AUDIT_PORT}
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-audit:
    image: xtensive/dpa-audit:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_AUDIT_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_audit;User Id=dpa_audit;Password=dpa_audit;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-kpi:
    image: xtensive/dpa-kpi:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_KPI_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_kpi;User Id=dpa_kpi;Password=dpa_kpi;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-messenger:
    image: xtensive/dpa-messenger:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_MESSENGER_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_messenger;User Id=dpa_messenger;Password=dpa_messenger;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-toolmanagement:
    image: xtensive/dpa-toolmanagement:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_TOOLMANAGEMENT_PORT}
      - DatabaseConnection__ConnectionString=Server=${POSTGRES_HOST};Port=${POSTGRES_PORT};Database=dpa_toolmanagement;User Id=dpa_toolmanagement;Password=dpa_toolmanagement;
      - DatabaseConnection__Provider=postgresql
      - TZ=${TZ}
    restart: unless-stopped
    logging:
      driver: "local"

  dpa-vnc:
    image: xtensive/dpa-vnc:${DPA_VERSION}
    volumes:
      - ${DPA_DATA_PATH}:/usr/share/X-tensive
    environment:
      - urls=http://*:${DPA_VNC_PORT}
      - TZ=${TZ}
    restart: unless-stopped
    logging:
      driver: "local"

Ключевые настройки для сценария:

  • DPA_SERVER_ADDRESS должен указывать на реальный адрес машины A (DNS или IP).
  • DPA_HOST_ADDRESS должен указывать на реальный адрес машины B, доступный с машины A.
  • На машине B должен быть открыт порт 45619/tcp.
  • На машине B должен быть открыт диапазон 1000-1010 по tcp и udp для подписки на состояния, снапшоты и поиска станков.
  • Если PostgreSQL на третьей машине, машина B должна иметь доступ к 5432/tcp этой БД.
Переменные окружения

Переменные .env для Docker Compose

ПеременнаяНазначениеПример
COMPOSE_PROJECT_NAMEИмя compose-проектаdpa
DPA_VERSIONТег образов DPA (dpa-host, dpa-server, микросервисы)6.9.5
TZЧасовой пояс контейнеров (IANA)Europe/Moscow
SYSTEM_LOCALEСистемная локаль DPA Hostru-RU
DPA_DATA_PATHКаталог данных DPA на хосте./dpa-data
POSTGRES_DATA_PATHКаталог данных PostgreSQL на хосте./postgres-data/16
HOST_HTTP_PORTПубликуемый HTTP-порт DPA Host80
HOST_HTTPS_PORTПубликуемый HTTPS-порт DPA Host443
POSTGRES_HOSTАдрес PostgreSQLdpa-postgres или 10.20.30.40
POSTGRES_PORTПорт PostgreSQL5432
POSTGRES_ADMIN_USERАдмин-пользователь PostgreSQL-контейнераpostgres
POSTGRES_ADMIN_PASSWORDПароль админ-пользователя PostgreSQL-контейнераpostgres
POSTGRES_MULTIPLE_DATABASESБазы, автоматически создаваемые dpa-postgresdpa_host, dpa_audit, dpa_toolmanagement, dpa_messenger, dpa_kpi
DPA_SERVER_ADDRESSАдрес DPA Server для автонастройки DPA Hostdpa-server или server.company.local
DPA_HOST_ADDRESSАдрес DPA Host для регистрации транспорта на DPA Serverdpa-host или host.company.local
DPA_AUDIT_ADDRESSАдрес микросервиса Auditdpa-audit
DPA_AUDIT_PORTПорт микросервиса Audit5880
DPA_KPI_ADDRESSАдрес микросервиса KPIdpa-kpi
DPA_KPI_PORTПорт микросервиса KPI5780
DPA_MESSENGER_ADDRESSАдрес микросервиса Messengerdpa-messenger
DPA_MESSENGER_PORTПорт микросервиса Messenger6080
DPA_TOOLMANAGEMENT_ADDRESSАдрес микросервиса ToolManagementdpa-toolmanagement
DPA_TOOLMANAGEMENT_PORTПорт микросервиса ToolManagement6180
DPA_VNC_ADDRESSАдрес микросервиса VNCdpa-vnc
DPA_VNC_PORTПорт микросервиса VNC5980

Переменные окружения контейнеров

dpa-postgres:

  • POSTGRES_MULTIPLE_DATABASES - список БД для автосоздания.
  • PGUSER - пользователь для внутренних команд (pg_isready и пр.).
  • POSTGRES_USER - админ-пользователь PostgreSQL.
  • POSTGRES_PASSWORD - пароль админ-пользователя PostgreSQL.
  • TZ - часовой пояс контейнера PostgreSQL.

dpa-server:

  • TZ - часовой пояс контейнера DPA Server.

dpa-host:

  • DatabaseConnection__Provider - провайдер БД: postgresql или sqlserver.
  • DatabaseConnection__ConnectionString - строка подключения к БД DPA Host.
  • TZ - часовой пояс контейнера.
  • SystemLocale - локаль по умолчанию для новых пользователей.
  • DefaultDpaServerAddress - адрес DPA Server для автоинициализации.
  • DefaultHostAddress - адрес DPA Host, который будет зарегистрирован на DPA Server.
  • Microservices__ToolManagement__Address, Microservices__ToolManagement__Port.
  • Microservices__Messenger__Address, Microservices__Messenger__Port.
  • Microservices__Kpi__Address, Microservices__Kpi__Port.
  • Microservices__Vnc__Address, Microservices__Vnc__Port.
  • Microservices__Audit__Address, Microservices__Audit__Port.

dpa-audit, dpa-kpi, dpa-messenger, dpa-toolmanagement:

  • urls - адрес и порт прослушивания микросервиса (http://*:PORT).
  • DatabaseConnection__Provider - postgresql или sqlserver.
  • DatabaseConnection__ConnectionString - строка подключения к БД микросервиса.
  • TZ - часовой пояс контейнера.

dpa-vnc:

  • urls - адрес и порт прослушивания (http://*:5980).
  • TZ - часовой пояс контейнера.
Диагностика и устранение типовых проблем

Проверка состояния сервисов

Убедитесь, что все контейнеры находятся в состоянии running:

1
docker compose ps

DPA Host доступен по адресу http://<host>:<HOST_HTTP_PORT>. Если интерфейс недоступен:

  • проверьте публикацию портов,
  • убедитесь, что порт не занят другим сервисом,
  • проверьте правила firewall на уровне хоста.

Для анализа используйте логи контейнеров:

1
2
3
docker compose logs -f dpa-host
docker compose logs -f dpa-server
docker compose logs -f dpa-postgres

Ошибки подключения к БД обычно видны сразу после старта.

Синхронизация времени

Корректное время является обязательным требованием для расписаний, токенов авторизации, аудита, корреляции логов, подписок и событий. Разница времени между узлами может приводить к трудно диагностируемым проблемам.

Рекомендуем синхронизировать системное время хостов, например, с помощью NTP, Chrony или Windows Time Service.

Установите одинаковый TZ во все контейнеры DPA и PostgreSQL. Используйте IANA-таймзону, например: Europe/Moscow, Asia/Yekaterinburg, UTC.

Проверка времени внутри контейнеров:

1
2
3
docker exec -it dpa-host date
docker exec -it dpa-server date
docker exec -it dpa-postgres date

Время должно совпадать (с учётом часового пояса).

Пример настройки на Linux-хосте:

1
2
sudo timedatectl set-timezone Europe/Moscow
sudo timedatectl set-ntp true

После изменения настроек рекомендуется перезапустить контейнеры.

Подробные инструкции по установке, настройке и эксплуатации DPA доступны в базе знаний: kb.rundpa.com