Nano Hash - криптовалюты, майнинг, программирование

Как запустить службу postgres 9.6 на образе docker centos 6

Я новичок в docker-compose, и я пытаюсь создать контейнер с postgres 9.6 поверх centos 6 и запустить его с помощью docker compose up. Затем я хочу иметь возможность подключиться к базе данных через какой-нибудь инструмент управления базами данных.

Если я бегу:

docker-compose up
  • Изображение строится правильно, но я не могу подключиться к базе данных.

  • Если я удалю tty: true и stdin_open: true, изображение будет построено, но затем оно завершится с кодом выхода 0.

  • Если я запускаю docker-run -it -p 5432: 5432 --entypoint / bin / bash [имя_образа], а затем вручную запускаю команду service postgresql-9.6 start все работает нормально (пока я не выйду из контейнера).

Любое предложение?

Вот мой файл для создания докеров:

networks{}
version: '2'
services:
    postgres:
        build:
          context: ./src/test/docker/postgres
        ports:
        - "5432:5432"
        stdin_open: true
        tty: true

И мой файл докеров:

FROM centos:6

RUN yum -y install 
https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-
centos96-9.6-3.noarch.rpm

RUN yum -y install postgresql96 postgresql96-server postgresql96-libs 
postgresql96-contrib postgresql96-devel

# Initialize the database (not starting it yet)
RUN service postgresql-9.6 initdb

RUN su postgres

RUN echo "listen_addresses = '*'" >> /var/lib/pgsql/9.6/data/postgresql.conf
RUN echo "PORT = 5432" >> /var/lib/pgsql/9.6/data/postgresql.conf
RUN echo "local   all             all                                     trust" > /var/lib/pgsql/9.6/data/pg_hba.conf
RUN echo "host    all             all             127.0.0.1/32            ident" >> /var/lib/pgsql/9.6/data/pg_hba.conf
RUN echo "host    all             all             ::1/128                 ident" >> /var/lib/pgsql/9.6/data/pg_hba.conf
RUN echo "host    all             all         0.0.0.0/0            md5" >> /var/lib/pgsql/9.6/data/pg_hba.conf

RUN exit

# Expose the PostgreSQL port
EXPOSE 5432

ENTRYPOINT service postgresql-9.6 start

Ответы:


1

ENTRYPOINT в файле докеров позволяет настроить контейнер как исполняемый файл. Это способ обернуть то, что вам нужно, со всеми зависимостями в контейнер и запустить контейнер = запустить ваш скрипт / приложение и т. Д. См. Подробности документации здесь

Теперь ваша точка входа

ENTRYPOINT service postgresql-9.6 start

Только запускает службу запускает и выходит! Таким образом, ваш контейнер также выйдет. Если вы хотите настроить его как исполняемый файл, вам нужно запустить команду postgres как вашу ENTRYPOINT команду

  ENTRYPOINT ["sudo","-u","postgres","/usr/pgsql-9.6/bin/postgres","-D","‌​/var/lib/pgsql/9.6/d‌​ata","-p","5432"]

Это запустит postgres в качестве вашей ENTRYPOINT команды при запуске контейнера, и вы сможете подключиться к нему.

01.08.2017
  • Большое спасибо @Colwin! ваш комментарий направил меня на правильный путь. Мне пришлось изменить только один путь в вашей команде и запустить ее как пользователь postgres. Измените его в своем ответе: ENTRYPOINT [sudo, -u, postgres, / usr / pgsql-9.6 / bin / postgres, -D, / var / lib / pgsql / 9.6 / data, -p, 5432] 01.08.2017
  • Рад, что смог помочь @Sokrates. Я обновил свой ответ, указав вашу новую точку входа. Не могли бы вы принять мой ответ, если он помог решить вашу проблему? 01.08.2017
  • Привет, @Colwin, я бы хотел, но похоже, что у меня недостаточно репутации для этого. Я прав? 01.08.2017
  • Вы должны принять ответ независимо от уровня вашей репутации. Это зеленая галочка под кнопками голосования. 01.08.2017
  • сделал спасибо. Если вы считаете, что мой вопрос имеет смысл, не могли бы вы проголосовать и за него? 02.08.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..