services: etcd: image: bitnami/etcd:latest restart: unless-stopped environment: - ETCD_NAME=${NODE_NAME} - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://${NODE_IP}:2380 - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 - ETCD_ADVERTISE_CLIENT_URLS=http://${NODE_IP}:2379 - ETCD_INITIAL_CLUSTER=node1=http://${NODE1_IP}:2380,node2=http://${NODE2_IP}:2380,node3=http://${NODE3_IP}:2380 - ETCD_INITIAL_CLUSTER_STATE=new - ETCD_INITIAL_CLUSTER_TOKEN=patroni-cluster - ALLOW_NONE_AUTHENTICATION=yes ports: - "2379:2379" - "2380:2380" volumes: - /data/compose/postgrecluster/etcd_data:/bitnami/etcd patroni: image: patroni/patroni:latest restart: unless-stopped environment: - PATRONI_NAME=${NODE_NAME} - PATRONI_POSTGRESQL_LISTEN=0.0.0.0:5432 - PATRONI_POSTGRESQL_CONNECT_ADDRESS=${NODE_IP}:5432 - PATRONI_RESTAPI_LISTEN=0.0.0.0:8008 - PATRONI_RESTAPI_CONNECT_ADDRESS=${NODE_IP}:8008 - PATRONI_ETCD3_HOSTS=${NODE1_IP}:2379,${NODE2_IP}:2379,${NODE3_IP}:2379 - PATRONI_SUPERUSER_USERNAME=postgres - PATRONI_SUPERUSER_PASSWORD=${POSTGRES_SUPERUSER_PASSWORD} - PATRONI_REPLICATION_USERNAME=replicator - PATRONI_REPLICATION_PASSWORD=${POSTGRES_REPLICATION_PASSWORD} - PATRONI_SCOPE=authentik-cluster - PATRONI_POSTGRESQL_DATA_DIR=/data/patroni ports: - "5432:5432" - "8008:8008" volumes: - /data/compose/postgrecluster/pg_data:/data/patroni depends_on: - etcd