-
Notifications
You must be signed in to change notification settings - Fork 10
/
docker-compose.yml
129 lines (121 loc) · 3.92 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
128
129
version: "3.9"
services:
postgres:
# if you want PostgreSQL vanilla experience :
# - use "postgres:latest" image
# - remove "timescaledb" from shared_preload_libraries
image: &pgimage timescale/timescaledb:latest-pg16
user: postgres
command:
- "-cshared_preload_libraries=pg_stat_statements,timescaledb"
- "-cpg_stat_statements.track=all"
- "-ctrack_io_timing=on"
- "-ctrack_functions=pl"
ports:
- "5432:5432"
environment:
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- "./docker/bootstrap/create_role_db.sql:/docker-entrypoint-initdb.d/create_role_db.sql"
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
grafana:
image: grafana/grafana:latest
user: "0:0"
environment:
GF_DATABASE_TYPE: postgres
GF_DATABASE_HOST: postgres:5432
GF_DATABASE_NAME: pgwatch3_grafana
GF_DATABASE_USER: pgwatch3
GF_DATABASE_PASSWORD: pgwatch3admin
GF_DATABASE_SSL_MODE: disable
GF_AUTH_ANONYMOUS_ENABLED: true
GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/1-global-db-overview.json
GF_INSTALL_PLUGINS: marcusolsson-treemap-panel
GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
ports:
- "3000:3000"
restart: unless-stopped
volumes:
- "./grafana/postgres_datasource.yml:/etc/grafana/provisioning/datasources/pg_ds.yml"
- "./grafana/postgres_dashboard.yml:/etc/grafana/provisioning/dashboards/pg_db.yml"
# Uncomment the dashboard version you want to use and comment out the other one.
- "./grafana/postgres/v10:/var/lib/grafana/dashboards"
#- "./grafana/postgres/v11:/var/lib/grafana/dashboards"
depends_on:
postgres:
condition: service_healthy
pgwatch3:
# uncomment build section below for dev experience
build:
context: .
dockerfile: ./docker/Dockerfile
image: cybertecpostgresql/pgwatch3:latest
environment:
PW3_CONFIG: postgresql://pgwatch3@postgres:5432/pgwatch3
PW3_SINK: postgresql://pgwatch3@postgres:5432/pgwatch3_metrics
ports:
- "8080:8080"
depends_on:
postgres:
condition: service_healthy
add-test-db:
image: *pgimage
environment:
PGHOST: postgres
PGUSER: postgres # we need superuser to create extensions
PGDATABASE: pgwatch3
command: >
psql -v ON_ERROR_STOP=1
-c "CREATE EXTENSION IF NOT EXISTS pg_stat_statements"
-c "GRANT EXECUTE ON FUNCTION pg_stat_file(text) TO pgwatch3"
-c "GRANT EXECUTE ON FUNCTION pg_stat_file(text, boolean) TO pgwatch3"
-c "INSERT INTO pgwatch3.source (name, preset_config, connstr)
SELECT 'demo', 'exhaustive', 'postgresql://pgwatch3:pgwatch3admin@postgres/pgwatch3'
WHERE NOT EXISTS (SELECT * FROM pgwatch3.source WHERE name = 'demo')"
depends_on:
postgres:
condition: service_healthy
profiles:
- add-test-db
pgbench:
image: *pgimage
environment:
PGHOST: postgres
PGUSER: pgwatch3
PGDATABASE: pgwatch3
command: >
sh -c "pgbench --initialize --scale=50 &&
pgbench --progress=5 --client=10 --jobs=2 --transactions=10000 &&
pgbench --initialize --init-steps=d"
depends_on:
postgres:
condition: service_healthy
profiles:
- pgbench
prometheus:
image: prom/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- 9090:9090
restart: unless-stopped
volumes:
- "./docker/prometheus.yml:/etc/prometheus/prometheus.yml"
profiles:
- prometheus
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: admin@local.com
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
- "./docker/pgadmin_servers.json:/pgadmin4/servers.json"
- "./docker/pgadmin_pass:/pgadmin4/pass"
ports:
- "80:80"
profiles:
- pgadmin