pg_replica 0.6.9

Consensus-driven failover for PostgreSQL (Raft control plane)
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