Сброрка создана с целью решить проблему запуска patroni в виде службы в кластере swarm. Основная проблема, препятствующая полноценной работе, это сетевое самоопределение конетейнеров. То-есть экземпляр не понимает где он находится и не может правильно выставить настройки партнеров репликации.

С целью устранить этот недостаток я обернул patroni в простую функцию определения сетевых настроек.

Принцип работы предельно прост. Берем переменную PATRONI_RAFT_SELF_ADDR и вычитаем ее из PATRONI_RAFT_PARTNER_ADDRS. При этом все сетевые имена преобразуем в ip адреса (так нужно оригинальному patroni).

Как запустить:

  • в PATRONI_RAFT_PARTNER_ADDRS записываем все адреса:порты кластера pantroni
  • в PATRONI_RAFT_SELF_ADDR записываем имя:порт ноды docker

форматы точно такие-же как в документации patroni

Оригинальный patroni никаким изменения не подвергался, это просто процедура настройки окружения перед запуской службы.

Собранный образ контейнера доступен на Docker Hub

Пример наcтройки службы swarm в файле docker-compose.yml