-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.bench.yml
More file actions
135 lines (129 loc) · 3.76 KB
/
docker-compose.bench.yml
File metadata and controls
135 lines (129 loc) · 3.76 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
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
# Ephemeral benchmark environment for RAG evaluation
# Runs isolated instances on different ports to avoid conflicts with main services
#
# Usage:
# just bench-up # Start benchmark environment
# just bench-down # Stop and remove (ephemeral data lost)
services:
# PostgreSQL for benchmark (ephemeral)
postgres-bench:
build:
context: ./services/postgres
dockerfile: Dockerfile
environment:
POSTGRES_USER_FILE: /run/secrets/POSTGRES_SUPERUSER
POSTGRES_PASSWORD_FILE: /run/secrets/POSTGRES_SUPERPASSWORD
POSTGRES_DB: ragbench
secrets:
- POSTGRES_SUPERUSER
- POSTGRES_SUPERPASSWORD
- RAG_SERVER_DB_USER
- RAG_SERVER_DB_PASSWORD
tmpfs:
- /var/lib/postgresql
volumes:
- ./services/postgres/00-roles.sh:/docker-entrypoint-initdb.d/00-roles.sh:ro
- ./services/postgres/init.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
- ./services/postgres/02-grants.sh:/docker-entrypoint-initdb.d/02-grants.sh:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $(cat /run/secrets/POSTGRES_SUPERUSER) -d ragbench"]
interval: 5s
timeout: 5s
retries: 5
networks:
- bench-private
# RAG Server for benchmark
rag-server-bench:
build:
context: .
dockerfile: ./services/rag_server/Dockerfile
user: "1000:1000"
ports:
- "8003:8001" # Different port from main rag-server
environment:
- DATABASE_HOST=postgres-bench
- DATABASE_PORT=5432
- DATABASE_NAME=ragbench
- LOG_LEVEL=WARNING
- MAX_UPLOAD_SIZE=80
secrets:
- OPENAI_API_KEY
- ANTHROPIC_API_KEY
- RAG_SERVER_DB_USER
- RAG_SERVER_DB_PASSWORD
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
postgres-bench:
condition: service_healthy
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8001/health', timeout=2)"]
interval: 2s
timeout: 3s
retries: 10
start_period: 15s
networks:
- bench-private
- bench-public
volumes:
- ./config.yml:/app/config.yml:ro
- docs_repo_bench:/tmp/shared
- ./.cache/huggingface:/home/appuser/.cache/huggingface
- documents_data_bench:/data/documents
# Task Worker for benchmark
task-worker-bench:
build:
context: .
dockerfile: ./services/rag_server/Dockerfile
command: [".venv/bin/python", "-m", "infrastructure.tasks.task_worker"]
user: "1000:1000"
environment:
- DATABASE_HOST=postgres-bench
- DATABASE_PORT=5432
- DATABASE_NAME=ragbench
- LOG_LEVEL=WARNING
- MAX_UPLOAD_SIZE=80
secrets:
- OPENAI_API_KEY
- ANTHROPIC_API_KEY
- RAG_SERVER_DB_USER
- RAG_SERVER_DB_PASSWORD
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
postgres-bench:
condition: service_healthy
rag-server-bench:
condition: service_healthy
networks:
- bench-private
- bench-public
volumes:
- ./config.yml:/app/config.yml:ro
- docs_repo_bench:/tmp/shared
- ./.cache/huggingface:/home/appuser/.cache/huggingface
- documents_data_bench:/data/documents
networks:
bench-public:
driver: bridge
bench-private:
driver: bridge
internal: true
volumes:
docs_repo_bench:
driver: local
documents_data_bench:
driver: local
secrets:
OPENAI_API_KEY:
file: secrets/OPENAI_API_KEY
ANTHROPIC_API_KEY:
file: secrets/ANTHROPIC_API_KEY
POSTGRES_SUPERUSER:
file: secrets/POSTGRES_SUPERUSER
POSTGRES_SUPERPASSWORD:
file: secrets/POSTGRES_SUPERPASSWORD
RAG_SERVER_DB_USER:
file: secrets/RAG_SERVER_DB_USER
RAG_SERVER_DB_PASSWORD:
file: secrets/RAG_SERVER_DB_PASSWORD