-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
112 lines (103 loc) · 4.61 KB
/
docker-compose.yml
File metadata and controls
112 lines (103 loc) · 4.61 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
version: '3'
services:
app:
container_name: go_blog_app # Название контейнера
build: . # Образ контейнера берем из текущей папки
ports: # Связываем порты хоста:контейнера
- 8080:8080
restart: on-failure
volumes: # Монтируем том с приложением
- api:/usr/src/app/
depends_on:
- go_blog-postgres
networks: # Подключаем к сети
- go_blog_network
go_blog-postgres:
container_name: go_blog_postgres # Название контейнера
image: postgres:15 # Название:версия образа (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: # Монтируем том с данными из БД
- database_postgres:/var/lib/postgresql/data
networks: # Подключаем к сети
- go_blog_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:
- go_blog-postgres # Ставим в зависимость от БД
networks:
- go_blog_network # Подключаем к сети
restart: unless-stopped
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:
- go_blog_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:
- go_blog_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:
- go_blog_network
# Список томов
volumes:
api:
database_postgres:
# Настройки сети (чтоб контейнеры могли обмениваться данными)
networks:
go_blog_network:
driver: bridge