Я пытаюсь настроить поток CI для приложения Django, которое опирается на postgis с исполнителем Kubernetes под управлением runner. Пытаясь это сделать, я столкнулся с несколькими видами проблем:
Попытка использовать postgres
в качестве службы, очевидно, недостаточна, но безуспешно, сообщая, что /usr/share/postgresql/9.6/extensions/postgis.control
не может быть найден. На данный момент, это ожидаемо - но я включаю его здесь, потому что это служит доказательством того, что соединение Django / PostgreSQL работает нормально, поскольку сбой происходит при попытке CREATE EXTENSION 'postgis'
из сценария начальной загрузки базы данных.
Добавление шага before_script
к apt install -y postgis* postgresql-9.6-postgis-scripts
, как рекомендовано в предыдущем ответе на SO, также приводит к сбою таким же образом. Поскольку это исполнитель k8s, я подозреваю, что он не устанавливает postgis на фактический хост postgres, что приводит к ошибке. Добавление шага find /usr postgis.control
подтверждает, что файл существует в контейнере бегущего теста.
Я также пытался использовать контейнер mdillon/postgis
, на который часто ссылаются как на решение этой проблемы, но нетигра в кости: использование localhost
в качестве хоста базы данных в приложении Django (которое работает как для простых postgres, так и рекомендовано документами для типа k8s executor) приводит к ошибкам о недоступности postgres на localhost:5432
. Обновление имени хоста до mdillon__postgis
также не удается (но это предсказуемо, поскольку этот формат имен DNS должен работать только на исполнителях Docker).
На этом этапе я также пыталсясоздание сделанного на заказ Dockerfile, но то, что у меня есть, очень близко имитирует Dockerfile mdillon/postgis
(есть только очень много способов установить postgis и скопировать скрипт initdb) и завершается сбоем таким же образом.
Есть ли какой-нибудь документированный или, по крайней мере, работающий способ получить Postgres с postgis, работающим под управлением исполнителя k8s gitlab-runner?