Задать вопрос
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


Постгрес пишет что конфиги не найдены. Ну да, монтирование же выполняется после сборки контейнера и он затирает имеющиеся файлы.
Каким образом лучше вернуть ему конфиг?
  • Вопрос задан
  • 891 просмотр
Подписаться 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. Если у вас нету каких-то особых настроек, то нафига его тогда трогать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы