62 lines
2.0 KiB
YAML
62 lines
2.0 KiB
YAML
# Один узел: памяти процесса достаточно, общий слой не нужен.
|
|
# docker compose up pd-guard
|
|
#
|
|
# Несколько узлов: маскирование детерминировано и работает на любом узле, а вот
|
|
# обратный шаг требует общего состояния — иначе запрос попадёт не на тот узел.
|
|
# docker compose --profile cluster up
|
|
services:
|
|
|
|
pd-guard:
|
|
build:
|
|
context: .
|
|
dockerfile: src/main/docker/Dockerfile.native
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
PDGUARD_MAX_CONCURRENT: "2000"
|
|
PDGUARD_STORE_TTL_MINUTES: "30"
|
|
# Переменная не задана — вторая ступень выключена. Чтобы включить:
|
|
# PDGUARD_NER_MODEL: /work/models/ru-ner-person.bin
|
|
volumes:
|
|
- ./config:/work/config:ro
|
|
# Модель второй ступени монтируется томом: в образ она не входит.
|
|
# Собрать: ./tools/train-ner.sh full
|
|
- ./models:/work/models:ro
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://localhost:8080/health"]
|
|
interval: 10s
|
|
timeout: 2s
|
|
retries: 3
|
|
|
|
redis:
|
|
profiles: ["cluster"]
|
|
image: redis:7-alpine
|
|
command: ["redis-server", "--save", "", "--appendonly", "no", "--maxmemory", "1gb", "--maxmemory-policy", "allkeys-lru"]
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 2s
|
|
retries: 5
|
|
|
|
node-a: &node
|
|
profiles: ["cluster"]
|
|
build:
|
|
context: .
|
|
dockerfile: src/main/docker/Dockerfile.native
|
|
ports:
|
|
- "8081:8080"
|
|
environment:
|
|
PDGUARD_STORE_BACKEND: redis
|
|
QUARKUS_REDIS_HOSTS: redis://redis:6379
|
|
PDGUARD_MAX_CONCURRENT: "2000"
|
|
volumes:
|
|
- ./config:/work/config:ro
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
|
|
node-b:
|
|
<<: *node
|
|
ports:
|
|
- "8082:8080"
|