-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdocker-compose-with-gpus.yml
139 lines (138 loc) · 4.1 KB
/
docker-compose-with-gpus.yml
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
136
137
138
139
version: '3'
services:
textual-db:
image: postgres:16
container_name: textual-db
restart: unless-stopped
ports:
- 25432:5432
volumes:
- ./metadata-db:/var/lib/postgresql/data
environment:
POSTGRES_USER: ${SOLAR_DB_USERNAME}
POSTGRES_PASSWORD: ${SOLAR_DB_PASSWORD}
POSTGRES_DB: ${SOLAR_DB_DATABASE}
healthcheck:
test: [ "CMD", "pg_isready", "-U", "postgres" ]
interval: 10s
timeout: 5s
retries: 5
textual-api:
image: quay.io/tonicai/textual-api:${SOLAR_VERSION}
container_name: textual-api
restart: unless-stopped
volumes:
- "./shared-logs:/usr/bin/textual/logs_public:Z"
- "./local-logs:/usr/bin/textual/logs:Z"
- "./log-config:/usr/bin/textual/vector_config:Z"
- "./certificates:/usr/bin/textual/certificates:ro"
env_file:
- .env
ports:
- "443:${SOLAR_PORT_HTTPS:-9001}"
- "80:${SOLAR_PORT_HTTP:-9002}"
healthcheck:
test: ["CMD-SHELL", "timeout 5 bash -c '</dev/tcp/localhost/${SOLAR_PORT_HTTP:-9002}'"]
interval: 30s
timeout: 30s
retries: 3
depends_on:
textual-db:
condition: service_healthy
textual-worker:
image: quay.io/tonicai/textual-worker:${SOLAR_VERSION}
container_name: textual-worker
restart: unless-stopped
volumes:
- "./shared-logs:/usr/bin/textual/logs_public:Z"
- "./local-logs:/usr/bin/textual/logs:Z"
- "./log-config:/usr/bin/textual/vector_config:Z"
env_file:
- .env
depends_on:
textual-db:
condition: service_healthy
textual-api:
condition: service_healthy
textual-ml:
image: quay.io/tonicai/textual-ml-gpu:${SOLAR_VERSION}
container_name: textual-ml
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
volumes:
- "./shared-logs:/usr/bin/textual/logs_public:Z"
- "./local-logs:/usr/bin/textual/logs:Z"
- "./log-config:/usr/bin/textual/vector_config:Z"
- "./custom-models:/usr/bin/textual/custom_models:Z"
environment:
SUPERVISOR_CONF: /etc/supervisor/conf.d/supervisord_api.conf
env_file:
- .env
depends_on:
- "textual-db"
textual-ml-worker:
image: quay.io/tonicai/textual-ml-gpu:${SOLAR_VERSION}
container_name: textual-ml-worker
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
volumes:
- "./shared-logs:/usr/bin/textual/logs_public:Z"
- "./local-logs:/usr/bin/textual/logs:Z"
- "./log-config:/usr/bin/textual/vector_config:Z"
- "./custom-models:/usr/bin/textual/custom_models:Z"
environment:
SUPERVISOR_CONF: /etc/supervisor/conf.d/supervisord_worker.conf
env_file:
- .env
depends_on:
textual-db:
condition: service_healthy
textual-api:
condition: service_healthy
log-shipper:
image: timberio/vector:latest-debian
container_name: log-shipper
restart: unless-stopped
# same UID as the default Solar UID
user: "${SOLAR_UID:-32537}:0"
command: ["--config", "/usr/bin/textual/vector_config/vector.toml"]
volumes:
- "./shared-logs:/usr/bin/textual/logs_public:Z"
- "./vector-working:/etc/textual/vector_data:Z"
- "./log-config:/usr/bin/textual/vector_config:ro"
env_file:
- .env
environment:
LOG_COLLECTION_FOLDER: "/usr/bin/textual/logs_public"
# otherwise volumes are owned by root and we cannot use them
file-perms:
image: debian:12-slim
container_name: file-perms
volumes:
- ./shared-logs:/etc/mounts/logs_public
- ./local-logs:/etc/mounts/logs
- ./log-config:/etc/mounts/vector_config
- ./vector-working:/etc/mounts/vector
- ./certificates:/etc/mounts/certificates
entrypoint: ["chmod"]
command: ["-R", "0777", "/etc/mounts"]
volumes:
metadata-db:
shared-logs:
local-logs:
log-config:
vector-working:
custom-models:
certificates: