-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
130 lines (116 loc) · 3.43 KB
/
docker-compose.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
version: "3.8"
networks:
k6:
grafana:
services:
mysqldb:
image: mysql:latest
restart: unless-stopped
env_file: ./.env
environment:
- MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
- MYSQL_DATABASE=$MYSQLDB_DATABASE
ports:
- $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT
volumes:
- db:/var/lib/mysql
app:
depends_on:
- mysqldb
build: ./demo-app
restart: on-failure
env_file: ./.env
ports:
- 6868:8080
environment:
SPRING_APPLICATION_JSON: '{
"spring.datasource.url" : "jdbc:mysql://mysqldb:$MYSQLDB_DOCKER_PORT/$MYSQLDB_DATABASE?useSSL=false",
"spring.datasource.username" : "$MYSQLDB_USER",
"spring.datasource.password" : "$MYSQLDB_ROOT_PASSWORD",
"spring.jpa.properties.hibernate.dialect" : "org.hibernate.dialect.MySQL5InnoDBDialect",
"spring.jpa.hibernate.ddl-auto" : "update",
"spring.datasource.hikari.connection-timeout" : "600000",
"spring.datasource.hikari.maximum-pool-size" : "500",
"spring.datasource.hikari.max-lifetime" : "30000",
"spring.datasource.hikari.minimum-idle" : "20",
"spring.datasource.hikari.validation-timeout" : "3000",
"spring.datasource.hikari.idle-timeout" : "60000",
"management.endpoints.web.exposure.include" : "prometheus",
"management.endpoint.health.show-details" : "always",
"management.metrics.tags.application" : "MonitoringSpringDemoProject"
}'
volumes:
- .m2:/root/.m2
stdin_open: true
tty: true
mem_limit: 4GB
influxdb:
image: influxdb:1.8
restart: always
networks:
- k6
- grafana
ports:
- "8086:8086"
environment:
INFLUX_DB: $INFLUX_DB
INFLUXDB_USER: $INFLUXDB_USER
INFLUXDB_USER_PASSWORD: $INFLUXDB_USER_PASSWORD
grafana:
image: grafana/grafana:latest
restart: always
networks:
- grafana
depends_on:
- prometheus
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=$GF_SECURITY_ADMIN_USER
- GF_SECURITY_ADMIN_PASSWORD=$GF_SECURITY_ADMIN_PASSWORD
- GF_SERVER_SERVE_FROM_SUB_PATH=true
volumes:
- ./grafana/dashboards:/var/lib/grafana/dashboards
- ./grafana/provisioning/dashboard.yaml:/etc/grafana/provisioning/dashboards/dashboard.yaml
- ./grafana/provisioning/datasource.yaml:/etc/grafana/provisioning/datasources/datasource.yaml
k6:
image: loadimpact/k6:latest
restart: always
networks:
- k6
depends_on:
- app
ports:
- "6565:6565"
environment:
- K6_OUT=influxdb=http://influxdb:8086/k6
volumes:
- ./scripts:/scripts
# tool to connect to mysql instance, and allow prometheus to collect mysql stats
prom_mysql_exporter:
image: prom/mysqld-exporter
links:
- mysqldb
ports:
- '9104:9104'
environment:
DATA_SOURCE_NAME: root:123456@(mysqldb:3306)/bezkoder_db
prometheus:
image: prom/prometheus
restart: always
volumes:
- ./prometheus/:/etc/prometheus/
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention=31d'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
ports:
- 9090:9090
depends_on:
- app
links:
- prom_mysql_exporter
volumes:
db: