Flexberry / dockerfiles

Dockerfiles for base flexberry docker images
MIT License
10 stars 5 forks source link

Докер образ с постгрес и некоторыми нужными нам её расширениями #2

Open PashaMasalkin opened 5 years ago

PashaMasalkin commented 5 years ago

postgis - расширения для геоданных tds_fdw используется для миграции данных с mssql на postgres Есть два разных докер-образа под эти требования - https://hub.docker.com/r/mdillon/postgis и https://github.com/kirychenkav/docker-postgres-tds-fdw/blob/master/9.6-1.0.8/Dockerfile , на основе первого и с выдержками из Dockerfile второго получился этот.

g=posts&m=13321#post13321

kafnevod commented 5 years ago

И как это чатать? Рабоча только первая ссылка...

kuzkok commented 5 years ago

@kafnevod немного исправил описание, вроде понятнее стало.

kafnevod commented 5 years ago

Расширение tds_fdw добавлено в базовый образ alt.p8-postgresql: https://hub.docker.com/r/flexberry/alt.p8-postgresql начиная с версии 9.6-1.1.1 == 9.6 == latest

Для расширение postgis (в силу его немаленького размера) у нас поддерживается в дочернем образе /alt.p8-postgresql-postgis https://hub.docker.com/r/flexberry/alt.p8-postgresql-postgis

Начиная с версии 2.3.3-1.1.0 этот образ наследует поддержку расширения tds_fdw

kafnevod commented 5 years ago

Да, коллеги не обратил внимание, что в PullRequest был предложен отдельный репозиторий dockerfiles/postgres-postgis-tds/ По поводу нового образа есть ряд вопросов:

  1. Насколько он нужен при наличии образов alt.p8.postgres - нужны веские аргументы?
  2. Если убедите нужно будет придумать имя образа и настроить autobuild
  3. Dockerfile "замусорен" - Пакеты необходиме для сборки: ca-certificates \ libsybdb5 \ freetds-dev \ freetds-common \ freetds-bin \ wget \ gcc \ make \ postgresql-server-dev-$PG_MAJOR" совершенно не нужны в итоговом образе так как существенно его утяжеляют Необходимо использовать механизм Dockerfile multistage и собирать бинарники в отдельном подобразе копируя только их в итоговый образ

Пример можно посмотреть в https://github.com/Flexberry/dockerfiles/blob/master/alt.p8-postgresql/Dockerfile

kuzkok commented 5 years ago

1,2 Я смотрел в сторону официального докер образа посгреса и его наследников, см так же #4 3 Пакет freetds-bin (и те от которых он зависит freetds-common, libsybdb5) нужен во время работы tds, остальные да, бесполезны. Наверно можно в скрипт добавить apt-get uninstall %лишние% && apt-get autoremove. Но да multistage будет правильнее.

kafnevod commented 5 years ago

Меня смущает, когда мы для одного и того же сервиса (postgres, mono, pentaho, ...) делаем несколько "параллельных образов без особой на то нужды. Каждый строя дерево образов сначала вносит туда свои фишки (например в postgres - создание пользователей, паролей для пользователя postgres, расширений, встроенных бази т.п.) В итоге когда мы "перепрыгиваем" с одной ветки образов на другую, то натыкаемся на кучу проблем со стыковкой Хотелось бы этого по возможности избежать, а если невозможно, то приводить эти ветки к одному состоянию, чтобы смена образа не приводила бы к тяжелым результатам...