-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
130 lines (121 loc) · 3.31 KB
/
docker-compose.yaml
File metadata and controls
130 lines (121 loc) · 3.31 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:
db:
image: postgres:16-alpine
container_name: syncdesk_postgres_db
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}" ]
interval: 5s
timeout: 5s
retries: 10
mongo:
image: mongo:7
container_name: syncdesk_mongo_db
restart: unless-stopped
env_file:
- .env
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
healthcheck:
test: [ "CMD", "mongosh", "--quiet", "-u", "${MONGO_INITDB_ROOT_USERNAME}", "-p", "${MONGO_INITDB_ROOT_PASSWORD}", "--authenticationDatabase", "admin", "--eval", "db.adminCommand('ping')" ]
interval: 30s
timeout: 5s
retries: 5
start_period: 10s
api:
container_name: syncdesk_api
restart: unless-stopped
env_file:
- .env
environment:
POSTGRES_HOST: db
MONGO_HOST: mongo
ports:
- "8000:8000"
volumes:
- app_logs:/app/logs
depends_on:
db:
condition: service_healthy
mongo:
condition: service_healthy
prometheus:
image: prom/prometheus:latest
container_name: syncdesk_prometheus
restart: unless-stopped
volumes:
- ./deploy/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./deploy/prometheus/rules.yml:/etc/prometheus/rules.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- "9090:9090"
alertmanager:
image: prom/alertmanager:latest
container_name: syncdesk_alertmanager
restart: unless-stopped
volumes:
- ./deploy/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
ports:
- "9093:9093"
loki:
image: grafana/loki:3.7.1
container_name: syncdesk_loki
restart: unless-stopped
volumes:
- ./deploy/loki/loki-config.yml:/etc/loki/local-config.yaml
- loki_data:/loki
command: -config.file=/etc/loki/local-config.yaml
promtail:
image: grafana/promtail:3.6.8
container_name: syncdesk_promtail
restart: unless-stopped
volumes:
- app_logs:/var/log/api
- ./deploy/promtail/promtail-config.yml:/etc/promtail/config.yml
- /var/run/docker.sock:/var/run/docker.sock:ro
- promtail_data:/run/promtail
command: -config.file=/etc/promtail/config.yml
depends_on:
- loki
- api
grafana:
image: grafana/grafana:latest
container_name: syncdesk_grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
- ./deploy/grafana/provisioning:/etc/grafana/provisioning
- ./deploy/grafana/dashboards:/var/lib/grafana/dashboards
depends_on:
- prometheus
- loki
- alertmanager
volumes:
app_logs:
postgres_data:
mongo_data:
prometheus_data:
grafana_data:
loki_data:
promtail_data: