name: pg-replica-test
x-node-env: &node-env
PGDATA: "/var/lib/postgresql/data"
POSTGRES_USER: "${POSTGRES_USER:-pgr_admin}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-pgr_super_pw}"
REPL_PASS: "${REPL_PASS:-pgr_repl_pw}"
PGR_SUPERVISE: "hold"
SYNCHRONOUS: "${SYNCHRONOUS:-}"
WAL_KEEP: "${WAL_KEEP:-}"
MAX_WAL: "${MAX_WAL:-}"
COMPACT_THRESHOLD: "${COMPACT_THRESHOLD:-}"
x-node-base: &node-base
image: pg-replica-paradedb:test
build:
context: ..
dockerfile: docker/Dockerfile
args:
TEST_TOOLS: "1"
cap_add: [NET_ADMIN, SYS_PTRACE]
init: true
restart: "no"
networks: [pgr]
services:
node1:
<<: *node-base
container_name: pgr-node1
environment:
<<: *node-env
NODE_ID: "1"
volumes: [node1data:/var/lib/postgresql/data, node1raft:/var/lib/postgresql/raft, ./postgres.conf:/etc/postgresql/postgresql.conf:ro]
ports: ["5432:5432"]
node2:
<<: *node-base
container_name: pgr-node2
depends_on: [node1]
environment:
<<: *node-env
NODE_ID: "2"
volumes: [node2data:/var/lib/postgresql/data, node2raft:/var/lib/postgresql/raft, ./postgres.conf:/etc/postgresql/postgresql.conf:ro]
ports: ["5433:5432"]
node3:
<<: *node-base
container_name: pgr-node3
depends_on: [node1]
environment:
<<: *node-env
NODE_ID: "3"
volumes: [node3data:/var/lib/postgresql/data, node3raft:/var/lib/postgresql/raft, ./postgres.conf:/etc/postgresql/postgresql.conf:ro]
ports: ["5434:5432"]
runner:
image: pg-replica-runner:test
build:
context: ..
dockerfile: docker/Dockerfile.runner
container_name: pgr-runner
environment:
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-pgr_super_pw}"
volumes:
- ..:/work
- /var/run/docker.sock:/var/run/docker.sock
working_dir: /work
networks: [pgr]
volumes:
node1data:
node2data:
node3data:
node1raft:
node2raft:
node3raft:
networks:
pgr:
driver: bridge