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: