forked from paunin/PostDock
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yml
187 lines (182 loc) · 6.25 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
version: '2'
networks:
cluster:
driver: bridge
services:
pgmaster:
# image: paunin/postdock-pgsql
build:
context: .
dockerfile: Postgres-latest.Dockerfile
environment:
PARTNER_NODES: "pgmaster,pgslave1,pgslave3"
NODE_ID: 1 # Integer number of node
NODE_NAME: node1 # Node name
CLUSTER_NODE_NETWORK_NAME: pgmaster # (default: hostname of the node)
NODE_PRIORITY: 100 # (default: 100)
SSH_ENABLE: 1
#database we want to use for application
POSTGRES_PASSWORD: monkey_pass
POSTGRES_USER: monkey_user
POSTGRES_DB: monkey_db
CLEAN_OVER_REWIND: 0
CONFIGS: "listen_addresses:'*',max_replication_slots:5"
# in format variable1:value1[,variable2:value2[,...]]
# used for pgpool.conf file
#defaults:
CLUSTER_NAME: pg_cluster # default is pg_cluster
REPLICATION_DB: replication_db # default is replication_db
REPLICATION_USER: replication_user # default is replication_user
REPLICATION_PASSWORD: replication_pass # default is replication_pass
ports:
- 5432:5432
volumes:
- pgmaster:/var/lib/postgresql/data
networks:
cluster:
aliases:
- pgmaster
#<<< Branch 1
pgslave1:
# image: paunin/postdock-pgsql
build:
context: .
dockerfile: Postgres-latest.Dockerfile
environment:
PARTNER_NODES: "pgmaster,pgslave1,pgslave3"
REPLICATION_PRIMARY_HOST: pgmaster
NODE_ID: 2
NODE_NAME: node2
CLUSTER_NODE_NETWORK_NAME: pgslave1 # (default: hostname of the node)
CLEAN_OVER_REWIND: 1
CONFIGS: "max_replication_slots:10" #some overrides
ports:
- 5441:5432
volumes:
- pgslave1:/var/lib/postgresql/data
networks:
cluster:
aliases:
- pgslave1
# Add more slaves if required
pgslave2:
# image: paunin/postdock-pgsql
build:
context: .
dockerfile: Postgres-latest.Dockerfile
environment:
REPLICATION_PRIMARY_HOST: pgslave1 # I want to have cascade Streeming replication
NODE_ID: 3
NODE_NAME: node3
CLUSTER_NODE_NETWORK_NAME: pgslave2 # (default: hostname of the node)
#USE_REPLICATION_SLOTS: 0
ports:
- 5442:5432
volumes:
- pgslave2:/var/lib/postgresql/data
networks:
cluster:
aliases:
- pgslave2
#>>> Branch 1
#<<< Branch 2
pgslave3:
# image: paunin/postdock-pgsql
build:
context: .
dockerfile: Postgres-latest.Dockerfile
environment:
PARTNER_NODES: "pgmaster,pgslave1,pgslave3"
REPLICATION_PRIMARY_HOST: pgmaster
NODE_ID: 4
NODE_NAME: node4
CLUSTER_NODE_NETWORK_NAME: pgslave3 # (default: hostname of the node)
NODE_PRIORITY: 200 # (default: 100)
CLEAN_OVER_REWIND: 1
ports:
- 5443:5432
volumes:
- pgslave3:/var/lib/postgresql/data
networks:
cluster:
aliases:
- pgslave3
pgslave4:
# image: paunin/postdock-pgsql
build:
context: .
dockerfile: Postgres-latest.Dockerfile
environment:
REPLICATION_PRIMARY_HOST: pgslave3
NODE_ID: 5
NODE_NAME: node5
CLUSTER_NODE_NETWORK_NAME: pgslave4 # (default: hostname of the node)
#USE_REPLICATION_SLOTS: 0
ports:
- 5444:5432
volumes:
- pgslave4:/var/lib/postgresql/data
networks:
cluster:
aliases:
- pgslave4
#>>> Branch 2
backup:
# image: paunin/postdock-barman
build:
context: .
dockerfile: Barman-latest.Dockerfile
environment:
REPLICATION_USER: replication_user # default is replication_user
REPLICATION_PASSWORD: replication_pass # default is replication_pass
REPLICATION_HOST: pgmaster
POSTGRES_PASSWORD: monkey_pass
POSTGRES_USER: monkey_user
POSTGRES_DB: monkey_db
SSH_ENABLE: 1
BACKUP_SCHEDULE: "*/30 */5 * * *"
volumes:
- backup:/var/backups
networks:
cluster:
aliases:
- backup
pgpool:
# image: paunin/postdock-pgpool
build:
context: .
dockerfile: Pgpool-latest.Dockerfile
environment:
PCP_USER: pcp_user
PCP_PASSWORD: pcp_pass
WAIT_BACKEND_TIMEOUT: 60
CHECK_USER: monkey_user
CHECK_PASSWORD: monkey_pass
CHECK_PGCONNECT_TIMEOUT: 3 #timout for checking if primary node is healthy
SSH_ENABLE: 1
DB_USERS: monkey_user:monkey_pass # in format user:password[,user:password[...]]
BACKENDS: "0:pgmaster:5432:1:/var/lib/postgresql/data:ALLOW_TO_FAILOVER,1:pgslave1::::,3:pgslave3::::,2:pgslave2::::" #,4:pgslaveDOES_NOT_EXIST::::
# in format num:host:port:weight:data_directory:flag[,...]
# defaults:
# port: 5432
# weight: 1
# data_directory: /var/lib/postgresql/data
# flag: ALLOW_TO_FAILOVER
REQUIRE_MIN_BACKENDS: 3 # minimal number of backends to start pgpool (some might be unreachable)
CONFIGS: "num_init_children:250,max_pool:4"
# in format variable1:value1[,variable2:value2[,...]]
# used for pgpool.conf file
ports:
- 5430:5432
- 9898:9898 # PCP
networks:
cluster:
aliases:
- pgpool
volumes:
pgmaster:
pgslave1:
pgslave2:
pgslave3:
pgslave4:
backup: