-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yaml
140 lines (130 loc) · 6.03 KB
/
docker-compose.yaml
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
140
version: '3'
services:
web:
container_name: "goodNews-app" # Название контейнера
build:
context: . # Образ контейнера берем из текущей папки
args:
REQUIREMENTS_FILE: reqs.txt
env_file: .env
command: bash -c "python manage.py migrate && python manage.py loaddata initial.json && python manage.py createsuperuser && python manage.py runserver 0.0.0.0:8000"
volumes: # Монтируем том с приложением
- ./:/app
ports: # Связываем порты хоста:контейнера
- 8000:8000
restart: on-failure # Перезапускаем при ошибке
depends_on:
- rabbitmq
- celery-worker
networks: # Подключаем к сети
- goodNews-network
good_news-postgres:
container_name: "goodNews-postgres" # Название контейнера
image: postgres:15.7-alpine # Название:версия образа (postgres:15.7-alpine)
environment: # Берем из .env
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
- DATABASE_HOST=${DB_HOST}
ports: # Связываем порты хоста:контейнера
- "5432:5432"
volumes: # Монтируем том с данными из БД
- postgres-data:/var/lib/postgresql/data
networks: # Подключаем к сети
- goodNews-network
pgadmin:
container_name: pgadmin_container # Название контейнера
image: dpage/pgadmin4 # Название:версия образа
environment: # Берем из .env
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
ports:
- "5050:80" # Связываем порты хоста:контейнера
depends_on:
- good_news-postgres # Ставим в зависимость от БД
networks:
- goodNews-network # Подключаем к сети
restart: unless-stopped
rabbitmq:
container_name: "goodNews-rabbitmq" # Название контейнера
image: rabbitmq:3.10.7-management # Название:версия образа (rabbitmq:3.10.7-management)
ports: # Связываем порты хоста:контейнера
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: "guest"
RABBITMQ_DEFAULT_PASS: "guest"
volumes: # Монтируем том с данными из rabbitmq
- rabbitmq-data:/var/lib/rabbitmq
networks: # Подключаем к сети
- goodNews-network
celery-worker:
container_name: "goodNews-celery-worker" # Название контейнера
build:
context: . # Образ контейнера берем из текущей папки
args:
REQUIREMENTS_FILE: reqs.txt
command: celery -A src worker --loglevel=info
volumes: # Монтируем том с данными из rabbitmq
- ./:/app
networks: # Подключаем к сети
- goodNews-network
prometheus:
container_name: prometheus # Система мониторинга
image: prom/prometheus:latest
volumes:
- ./etc/prometheus:/etc/prometheus/ # Монтируем том с данными из БД
hostname: prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml # Устанавливаем конфигурацию из файла prometheus.yml
ports:
- 9090:9090 # Связываем порты хоста:контейнера
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- goodNews-network
# Извлекает данные хоста (cpu, memory)
node-exporter:
container_name: exporter
image: prom/node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
hostname: exporter
command:
- --path.procfs=/host/proc
- --path.sysfs=/host/sys
- --collector.filesystem.ignored-mount-points
- ^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)
ports:
- 9100:9100
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- goodNews-network
# Визуализация данных на дашборде
grafana:
image: grafana/grafana
user: root
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./etc/grafana:/var/lib/grafana
- ./etc/grafana/provisioning/:/etc/grafana/provisioning/
container_name: grafana
hostname: grafana
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- goodNews-network
volumes:
postgres-data:
rabbitmq-data:
networks:
goodNews-network: