-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
130 lines (124 loc) · 2.98 KB
/
docker-compose.yml
File metadata and controls
130 lines (124 loc) · 2.98 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
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: app
POSTGRES_DB: qc
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app -d qc"]
interval: 5s
timeout: 3s
retries: 10
restart: unless-stopped
rabbitmq:
image: rabbitmq:3.13-management-alpine
environment:
RABBITMQ_DEFAULT_USER: app
RABBITMQ_DEFAULT_PASS: app
ports:
- "5672:5672"
- "15672:15672"
volumes:
- rabbitmq_data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 5s
timeout: 3s
retries: 10
restart: unless-stopped
migrate:
build: .
command: ["alembic", "upgrade", "head"]
environment:
ENVIRONMENT: local
LOG_LEVEL: INFO
DATABASE_URL: postgresql://app:app@postgres:5432/qc
depends_on:
postgres:
condition: service_healthy
restart: "no"
api:
build: .
environment:
ENVIRONMENT: local
LOG_LEVEL: INFO
CELERY_BROKER_URL: amqp://app:app@rabbitmq:5672//
CELERY_RESULT_BACKEND: rpc://
DATABASE_URL: postgresql://app:app@postgres:5432/qc
TASK_QUEUE_NAME: qc
NUM_SHOTS: 1024
WORKER_MAX_RETRIES: 3
WORKER_RETRY_DELAY_S: 5
TASK_SOFT_TIME_LIMIT_S: 60
TASK_TIME_LIMIT_S: 90
ports:
- "8000:8000"
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
migrate:
condition: service_completed_successfully
healthcheck:
test:
[
"CMD",
"python",
"-c",
"import urllib.request; urllib.request.urlopen('http://localhost:8000/health').read()",
]
interval: 5s
timeout: 3s
retries: 10
restart: unless-stopped
worker:
build: .
command:
[
"celery",
"-A",
"app.worker.celery_app:celery_app",
"worker",
"--loglevel=INFO",
"--queues=qc",
]
environment:
ENVIRONMENT: local
LOG_LEVEL: INFO
CELERY_BROKER_URL: amqp://app:app@rabbitmq:5672//
CELERY_RESULT_BACKEND: rpc://
DATABASE_URL: postgresql://app:app@postgres:5432/qc
TASK_QUEUE_NAME: qc
NUM_SHOTS: 1024
WORKER_MAX_RETRIES: 3
WORKER_RETRY_DELAY_S: 5
TASK_SOFT_TIME_LIMIT_S: 60
TASK_TIME_LIMIT_S: 90
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
migrate:
condition: service_completed_successfully
restart: unless-stopped
tests:
build: .
command: ["pytest", "-q"]
profiles: ["test"]
environment:
API_BASE_URL: http://api:8000
NUM_SHOTS: 1024
depends_on:
api:
condition: service_healthy
worker:
condition: service_started
restart: "no"
volumes:
postgres_data:
rabbitmq_data: