Задать вопрос
Xuxicheta
@Xuxicheta
инженер

Как вынести конфигурацию postgres в подключаемый том docker?

Собираю свой postgres, по руководству в доках Докера.
docker build -t my/postgres .
FROM ubunru
RUN apt-get install -y python-software-properties software-properties-common postgresql-9.5 postgresql-client-9.5 postgresql-contrib-9.5
USER postgres
RUN    /etc/init.d/postgresql start &&\
    psql --command "CREATE USER myuser WITH SUPERUSER PASSWORD 'pmyuser';" &&\
    createdb -O myuser myuser
RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/9.5/main/pg_hba.conf
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.5/main/postgresql.conf
EXPOSE 5432
VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
ENTRYPOINT /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf


Запускаю
docker run -d --name=PGmaster \
 -p 5432:5432 \
 -v /opt/postgres/etc:/etc/postgresql/9.5/main \
 -v /opt/postgres/log:/var/log/postgresql \
 -v /opt/postgres/data:/var/lib/postgresql \
  my/postgres


Постгрес пишет что конфиги не найдены. Ну да, монтирование же выполняется после сборки контейнера и он затирает имеющиеся файлы.
Каким образом лучше вернуть ему конфиг?
  • Вопрос задан
  • 900 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@de1m
У меня было похожее с "mysql". Тут есть пять решений:
1. Использовать официальный контейнер, может там это проблема уже решена и через линкование соединить его с тем где вам нужен postgres
2. У вас уже есть готовый конфиг и вы его закидываете во время создания контейнера через "COPY" или "ADD"
3. Сделать скрипт (Поместить в ENTRYPOINT) который будет проверять определённую папку. Если папка есть и она пустая, то копируте туда конфиг и стартует postgres с него, если папки нету, то стартует с оригинального конфига. Получиться, что при сборке он будте использовать оригинальный конфиг, а при старте надо будет смонтировать папку (которая будет проверяться в скрипте). Скрипт скинет туда конфиг и будет его использовать для следующих стартов. Посмотрите вот этот проект (run.sh), но там ад. Там ещё куча других вещей для mysql и icinga.
4. Использовать "sed" и поменять/добавить нужные настройки в /etc/postgresql/9.5/main/postgresql.conf
5. Если у вас нету каких-то особых настроек, то нафига его тогда трогать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 до 120 000 ₽
Сбер Москва
от 450 000 до 550 000 ₽
ИТРУМ Ростов-на-Дону
от 75 000 ₽