-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
103 lines (103 loc) · 5.11 KB
/
Copy pathdocker-compose.yml
File metadata and controls
103 lines (103 loc) · 5.11 KB
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
services:
paradedb:
image: paradedb/paradedb:latest
environment:
POSTGRES_USER: reviewer
POSTGRES_PASSWORD: reviewer
POSTGRES_DB: reviewer
# loopback-only: локальный dev-стек не должен слушать LAN. Креды — одноразовые dev-дефолты.
ports: ["127.0.0.1:${PARADEDB_PUBLISH_PORT:-5433}:5432"] # 5433 на хосте: 5432 занят локальным Postgres разработчика
volumes: ["paradedb_data:/var/lib/postgresql/"]
# Дефолтные 10 с `docker compose stop` — таймаут до SIGKILL, а не задержка:
# быстрое завершение не ждёт весь период. Для СУБД с персистентным томом
# запас важнее, чем скорость остановки: контрольная точка большого индекса
# в 10 с не всегда укладывается.
stop_grace_period: 60s
# Без healthcheck `up -d --wait` (и `reviewer start`) считает сервис готовым
# по состоянию running — до того, как Postgres примет первое соединение.
healthcheck:
test: ["CMD-SHELL", "pg_isready -U reviewer -d reviewer"]
start_period: 180s
start_interval: 2s
interval: 30s
timeout: 2s
retries: 3
neo4j:
image: neo4j:5
environment:
NEO4J_AUTH: neo4j/reviewerpass
ports: ["127.0.0.1:${NEO4J_HTTP_PUBLISH_PORT:-7474}:7474", "127.0.0.1:${NEO4J_BOLT_PUBLISH_PORT:-7687}:7687"]
volumes: ["neo4j_data:/data"]
# За дефолтные 10 с JVM Neo4j не успевает завершиться штатно: контейнер уходит
# по SIGKILL (код выхода 137), а store остаётся на восстановление при следующем
# старте. Штатное завершение по-прежнему занимает свои несколько секунд.
stop_grace_period: 60s
# Редкий idle-interval: cypher-shell поднимает JVM (~2.5 c CPU за пробу),
# поэтому частые пробы допустимы только в фазе старта — через start_interval.
healthcheck:
test: ["CMD-SHELL", "cypher-shell -u neo4j -p reviewerpass 'RETURN 1'"]
start_period: 180s
start_interval: 2s
interval: 300s
timeout: 3s
retries: 3
web:
# Web admin собирается и запускается только через явный `--profile web`.
profiles: ["web"]
build:
context: .
dockerfile: web/Dockerfile
environment:
PG_DSN: postgresql://reviewer:reviewer@paradedb:5432/reviewer
REVIEWER_WEB_HOST: 0.0.0.0
REVIEWER_WEB_PORT: ${REVIEWER_WEB_PORT:-8000}
WEB_ADMIN_USER: ${WEB_ADMIN_USER:-}
WEB_ADMIN_PASSWORD: ${WEB_ADMIN_PASSWORD:-}
ports:
- "127.0.0.1:${REVIEWER_WEB_PUBLISH_PORT:-8000}:${REVIEWER_WEB_PORT:-8000}"
depends_on: ["paradedb"]
# ============================================================================
# ВАЖНО: test-profile использует общий Compose project с dev-сервисами.
# Безопасное удаление: docker compose --profile test rm -sfv paradedb-test neo4j-test
# НИКОГДА не используйте `docker compose --profile test down -v`: это остановит
# dev-сервисы и удалит production named volumes.
#
# start_interval требует Docker Engine >= 25.0 / API >= 1.44: на старых движках
# ключ игнорируется, стартовые пробы идут с редким interval и `up -d --wait`
# ждёт минутами вместо секунд.
# ============================================================================
paradedb-test:
image: paradedb/paradedb@sha256:dbd64f0eb2716b8466afe54b91fec782f4107a8d0e6bd3660b89c88a1ded2ead
profiles: ["test"]
environment:
POSTGRES_USER: reviewer_test
POSTGRES_PASSWORD: reviewer_test
POSTGRES_DB: reviewer_test
ports: ["127.0.0.1:55433:5432"]
tmpfs: ["/var/lib/postgresql"]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U reviewer_test -d reviewer_test"]
start_period: 180s
start_interval: 2s
interval: 30s
timeout: 2s
retries: 3
neo4j-test:
image: neo4j@sha256:0b5d3ab6ec1b866890dbfb53bf4fe1cf039f9e03c96165599a403005b7e7bcc3
profiles: ["test"]
environment:
NEO4J_AUTH: neo4j/reviewer_test_pass
ports: ["127.0.0.1:17474:7474", "127.0.0.1:17687:7687"]
tmpfs: ["/data", "/logs"]
# cypher-shell поднимает JVM (~2.5 с CPU за вызов): в простое проба идёт раз в 5 минут,
# частые пробы — только в фазе старта (start_period + start_interval).
healthcheck:
test: ["CMD-SHELL", "cypher-shell -u neo4j -p reviewer_test_pass 'RETURN 1'"]
start_period: 180s
start_interval: 2s
interval: 300s
timeout: 3s
retries: 3
volumes:
paradedb_data:
neo4j_data: