-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
109 lines (102 loc) · 3.97 KB
/
docker-compose.yml
File metadata and controls
109 lines (102 loc) · 3.97 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
name: splatgen
services:
interface:
build:
context: ./interface
dockerfile: Dockerfile
container_name: splatgen_interface
ports:
- "8000:80"
volumes:
# Mount interface code into /app/interface for reload and worker access
- ./interface:/app/interface # <--- ADJUSTED PATH
- ./data:/app/data
environment:
- PYTHONPATH=/app # <--- ADDED
- DATABASE_URL=postgresql+asyncpg://${POSTGRES_USER:-user}:${POSTGRES_PASSWORD:-password}@postgres:5432/${POSTGRES_DB:-splatgendb}
- RABBITMQ_URL=amqp://${RABBITMQ_DEFAULT_USER:-guest}:${RABBITMQ_DEFAULT_PASS:-guest}@rabbitmq:5672//
depends_on:
- postgres
- rabbitmq
# Command adjusted to reflect WORKDIR /app if not specified in Dockerfile, and reload path
command: uvicorn interface.app.main:app --host 0.0.0.0 --port 80 --reload --reload-dir /app/interface # <--- ADJUSTED COMMAND
restart: on-failure
cpu_worker:
build:
context: ./worker
dockerfile: Dockerfile
container_name: splatgen_cpu_worker
volumes:
- ./worker:/app/worker
- ./interface:/app/interface # <--- ADDED: Mount interface for imports
- ./data:/app/data
environment:
- PYTHONPATH=/app # <--- ADDED: Allow imports from /app/interface
- DATABASE_URL=postgresql+psycopg2://${POSTGRES_USER:-user}:${POSTGRES_PASSWORD:-password}@postgres:5432/${POSTGRES_DB:-splatgendb}
- RABBITMQ_URL=amqp://${RABBITMQ_DEFAULT_USER:-guest}:${RABBITMQ_DEFAULT_PASS:-guest}@rabbitmq:5672//
- CELERY_RESULT_BACKEND=db+postgresql+psycopg2://${POSTGRES_USER:-user}:${POSTGRES_PASSWORD:-password}@postgres:5432/${POSTGRES_DB:-splatgendb}
- NVIDIA_VISIBLE_DEVICES=""
- QT_QPA_PLATFORM=offscreen
depends_on:
- postgres
- rabbitmq
command: celery -A worker.celery_app worker -l info -Q cpu_queue --loglevel=INFO
restart: on-failure
gpu_worker:
build:
context: ./worker
dockerfile: Dockerfile
container_name: splatgen_gpu_worker
volumes:
- ./worker:/app/worker
- ./interface:/app/interface # <--- ADDED: Mount interface for imports
- ./data:/app/data
environment:
- PYTHONPATH=/app # <--- ADDED: Allow imports from /app/interface
- DATABASE_URL=postgresql+psycopg2://${POSTGRES_USER:-user}:${POSTGRES_PASSWORD:-password}@postgres:5432/${POSTGRES_DB:-splatgendb}
- RABBITMQ_URL=amqp://${RABBITMQ_DEFAULT_USER:-guest}:${RABBITMQ_DEFAULT_PASS:-guest}@rabbitmq:5672//
- CELERY_RESULT_BACKEND=db+postgresql+psycopg2://${POSTGRES_USER:-user}:${POSTGRES_PASSWORD:-password}@postgres:5432/${POSTGRES_DB:-splatgendb}
- QT_QPA_PLATFORM=offscreen
- NVIDIA_DRIVER_CAPABILITIES=all
depends_on:
- postgres
- rabbitmq
command: celery -A worker.celery_app worker -l info -Q gpu_queue -c 1 --loglevel=INFO # Listen only to gpu_queue, concurrency 1
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
restart: on-failure
rabbitmq:
image: rabbitmq:4-management # Your specified version
container_name: splatgen_rabbitmq
ports:
- "5672:5672" # AMQP protocol port
- "15672:15672" # Management UI port
environment:
- RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER:-guest}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS:-guest}
volumes:
# Persist RabbitMQ data
- rabbitmq_data:/var/lib/rabbitmq/
restart: on-failure
postgres:
image: postgres:17.4-bookworm # Your specified version
container_name: splatgen_postgres
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${POSTGRES_USER:-user}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
- POSTGRES_DB=${POSTGRES_DB:-splatgendb}
restart: on-failure
volumes:
postgres_data:
driver: local
rabbitmq_data:
driver: local