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
services:
postgres:
image: postgres:16-alpine
command:
- postgres
- -c
- wal_level=logical
- -c
- max_replication_slots=10
- -c
- max_wal_senders=10
environment:
POSTGRES_USER: udb
POSTGRES_PASSWORD: udb
POSTGRES_DB: udb
ports:
- "55432:5432"
healthcheck:
test:
interval: 5s
timeout: 3s
retries: 20
kafka:
image: apache/kafka:3.9.0
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://kafka:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "false"
KAFKA_COMPRESSION_TYPE: lz4
ports:
- "59192:9092"
healthcheck:
test:
interval: 10s
timeout: 5s
retries: 20
redis:
image: redis:7-alpine
ports:
- "56379:6379"
healthcheck:
test:
interval: 5s
timeout: 3s
retries: 20
udb:
profiles:
build:
context: ../..
dockerfile: src/udb/Dockerfile
environment:
UDB_PG_DSN: postgres://udb:udb@postgres:5432/udb
UDB_REDIS_DSN: redis://redis:6379/0
UDB_QDRANT_URL: http://qdrant:6333
UDB_MINIO_ENDPOINT: http://minio:9000
UDB_MINIO_ACCESS_KEY: minio
UDB_MINIO_SECRET_KEY: minio123
UDB_KAFKA_BROKERS: kafka:9092
UDB_ABAC_DEFAULT_ALLOW: "true"
RUST_LOG: info
ports:
- "50051:50051"
- "50052:50052"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
qdrant:
condition: service_healthy
minio:
condition: service_healthy
kafka:
condition: service_healthy
healthcheck:
test:
interval: 10s
timeout: 5s
start_period: 30s
retries: 6
qdrant:
image: qdrant/qdrant:v1.13.4
ports:
- "56333:6333"
healthcheck:
test:
interval: 5s
timeout: 3s
retries: 20
minio:
image: minio/minio:RELEASE.2025-01-20T14-49-07Z
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minio123
ports:
- "59000:9000"
- "59001:9001"
healthcheck:
test:
interval: 5s
timeout: 3s
retries: 20