Рефакторинг обработчиков. Финальное тестирование #21
This commit is contained in:
@@ -42,6 +42,9 @@ EXPOSE 8080 8081 8445 8446
|
||||
ENV PATH="/app/erts-16.3.1/bin:$PATH"
|
||||
|
||||
ENV RELX_REPLACE_OS_VARS=true
|
||||
ENV MNESIA_DIR=/app/data
|
||||
|
||||
CMD /app/bin/eventhub foreground
|
||||
CMD /app/bin/eventhub foreground
|
||||
# COPY docker/entrypoint.sh /app/entrypoint.sh
|
||||
# RUN chmod +x /app/entrypoint.sh
|
||||
#
|
||||
# ENTRYPOINT ["/app/entrypoint.sh"]
|
||||
@@ -11,4 +11,6 @@ docker build -t observer_web:latest -f docker/ObserverWeb.Dockerfile .
|
||||
docker build -t logrotate:latest -f docker/logrotate/Dockerfile docker/logrotate
|
||||
|
||||
# Admin UI – из соседней папки EventHubFrontAdmin
|
||||
docker build -t admin-ui:latest -f ../EventHubFrontAdmin/Dockerfile ../EventHubFrontAdmin
|
||||
docker build -t admin-ui:latest -f ../EventHubFrontAdmin/Dockerfile ../EventHubFrontAdmin
|
||||
|
||||
docker build -t eventhub-emulator -f test/emulate_users/Dockerfile .
|
||||
@@ -59,11 +59,11 @@ services:
|
||||
- RELEASE_COOKIE=${RELEASE_COOKIE:-eventhub_cookie}
|
||||
- JWT_SECRET=${JWT_SECRET:-eventhub_top_secret}
|
||||
- ADMIN_SUPER_EMAIL=${ADMIN_SUPER_EMAIL:-superadmin@eventhub.local}
|
||||
- ADMIN_SUPER_PASSWORD=${ADMIN_SUPER_PASSWORD:-SuperAdmin123!}
|
||||
- ADMIN_SUPER_PASSWORD=${ADMIN_SUPER_PASSWORD:-123456}
|
||||
- ADMIN_MODER_EMAIL=${ADMIN_MODER_EMAIL:-moderator@eventhub.local}
|
||||
- ADMIN_MODER_PASSWORD=${ADMIN_MODER_PASSWORD:-Moderator123!}
|
||||
- ADMIN_MODER_PASSWORD=${ADMIN_MODER_PASSWORD:-123456}
|
||||
- ADMIN_SUPPORT_EMAIL=${ADMIN_SUPPORT_EMAIL:-support@eventhub.local}
|
||||
- ADMIN_SUPPORT_PASSWORD=${ADMIN_SUPPORT_PASSWORD:-Support123!}
|
||||
- ADMIN_SUPPORT_PASSWORD=${ADMIN_SUPPORT_PASSWORD:-123456}
|
||||
- CLUSTER_MODE=true
|
||||
- DNS_NAME=eventhub-node
|
||||
networks:
|
||||
@@ -71,9 +71,13 @@ services:
|
||||
aliases:
|
||||
- eventhub-node
|
||||
volumes:
|
||||
- eventhub-data:/app/data
|
||||
- type: volume
|
||||
source: eventhub-data
|
||||
target: /app/data
|
||||
# volume:
|
||||
# nocopy: true
|
||||
deploy:
|
||||
replicas: 1
|
||||
replicas: 2
|
||||
endpoint_mode: dnsrr
|
||||
restart_policy:
|
||||
condition: any
|
||||
@@ -110,7 +114,7 @@ services:
|
||||
ports:
|
||||
- "9090:9090"
|
||||
deploy:
|
||||
replicas: 0
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: any
|
||||
|
||||
@@ -130,7 +134,7 @@ services:
|
||||
ports:
|
||||
- "3000:3000"
|
||||
deploy:
|
||||
replicas: 0
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: any
|
||||
|
||||
@@ -180,12 +184,37 @@ services:
|
||||
restart_policy:
|
||||
condition: any
|
||||
|
||||
bot-emulator-users:
|
||||
image: bot-emulator-users:latest
|
||||
environment:
|
||||
- ADMIN_API_HOST=http://eventhub-node:8445
|
||||
- CLIENT_API_HOST=http://eventhub-node:8080
|
||||
- ADMIN_EMAIL=admin@eventhub.local
|
||||
- ADMIN_PASSWORD=123456
|
||||
- BOT_PASSWORD=botpass123
|
||||
- MIN_DELAY=0.5
|
||||
- MAX_DELAY=3.0
|
||||
- LOOP_FOREVER=true
|
||||
- BOT_REFRESH_INTERVAL=300
|
||||
- DEBUG=false
|
||||
networks:
|
||||
- eventhub-net
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: any
|
||||
delay: 5s
|
||||
max_attempts: 3
|
||||
window: 120s
|
||||
|
||||
networks:
|
||||
eventhub-net:
|
||||
driver: overlay
|
||||
|
||||
volumes:
|
||||
eventhub-data:
|
||||
# name: 'eventhub-data-{{.Task.Slot}}'
|
||||
prometheus-data:
|
||||
grafana-data:
|
||||
traefik-logs:
|
||||
|
||||
20
docker/entrypoint.sh
Normal file
20
docker/entrypoint.sh
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
# Динамически подставляет имя Erlang-узла в vm.args перед запуском релиза
|
||||
|
||||
set -e
|
||||
|
||||
# Имя узла берётся из переменной окружения NODENAME (задаётся в docker-compose)
|
||||
# или определяется по hostname контейнера (как fallback)
|
||||
NODENAME="${NODENAME:-$(hostname)}"
|
||||
ERL_NAME="${NODENAME}@${NODENAME}"
|
||||
|
||||
# Путь к vm.args в релизе (обычно /app/releases/<version>/vm.args)
|
||||
VM_ARGS="/app/releases/0.0.1/vm.args"
|
||||
|
||||
# Подставляем корректное имя узла
|
||||
sed -i "s/^-sname.*/-sname ${ERL_NAME}/" "$VM_ARGS"
|
||||
|
||||
echo "Starting EventHub with Erlang node name: ${ERL_NAME}"
|
||||
|
||||
# Запускаем релиз
|
||||
exec /app/bin/eventhub foreground
|
||||
@@ -2,26 +2,25 @@ global:
|
||||
scrape_interval: 5s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: 'eventhub-node1'
|
||||
static_configs:
|
||||
- targets: ['eventhub-node1:8080'] # http://localhost:8080/metrics/default
|
||||
labels:
|
||||
node: 'node1'
|
||||
metrics_path: '/metrics/default'
|
||||
- job_name: 'eventhub-node2'
|
||||
static_configs:
|
||||
- targets: ['eventhub-node2:8080']
|
||||
labels:
|
||||
node: 'node2'
|
||||
metrics_path: '/metrics/default'
|
||||
- job_name: 'eventhub-node3'
|
||||
static_configs:
|
||||
- targets: ['eventhub-node3:8080']
|
||||
labels:
|
||||
node: 'node3'
|
||||
# Динамическое обнаружение нод eventhub через DNS A‑записи
|
||||
- job_name: 'eventhub-nodes'
|
||||
dns_sd_configs:
|
||||
- names:
|
||||
- 'eventhub-node' # имя, резолвящееся во все ноды
|
||||
type: 'A' # использовать A‑записи (IPv4)
|
||||
port: 8080 # порт, на котором слушает eventhub
|
||||
metrics_path: '/metrics/default'
|
||||
# Добавляем лейблы, если нужно идентифицировать ноду
|
||||
relabel_configs:
|
||||
- source_labels: [__meta_dns_name]
|
||||
target_label: dns_name
|
||||
- source_labels: [__address__]
|
||||
target_label: instance
|
||||
replacement: '${1}:8080'
|
||||
|
||||
# Остальные джобы без изменений
|
||||
- job_name: 'traefik'
|
||||
scrape_interval: 15s
|
||||
static_configs:
|
||||
- targets: [ 'traefik:8080' ]
|
||||
- targets: ['traefik:8080']
|
||||
metrics_path: '/metrics'
|
||||
Reference in New Issue
Block a user