2017-08-01 10 views
1

私はドッカーの作成に新しく、私はcentos 6の上にpostgres 9.6でコンテナを構築しようとしています。 次に、いくつかのdb管理ツールを使用してデータベースに接続したいと考えています。ドッカーのcentos 6イメージでpostgres 9.6サービスを起動する方法

私が実行している場合:

docker-compose up 
  • 画像が正しく構築するが、その後、私は、データベースに接続することはできません。

  • 私はのtty削除する場合

  • 真と stdin_openを:真画像を構築するが、その後、それが終了コードで終了0

  • 私は5432を-p -itドッカ・ランを実行する場合:5432 - -entypoint/bin/bash [image_name]を実行してから、手動でコマンドを実行します。サービス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 

のみサービスを実行しているあなたはドキュメントの詳細今すぐ

hereあなたのエントリポイントを参照してください=すべての依存関係コンテナ内およびコンテナを実行して実行するなどのスクリプト/アプリケーションを実行して必要なものを包むの方法です開始して終了します!したがって、コンテナも終了します。 あなたENTRYPOINTコマンドとしてpostgresのコマンドを実行する必要がありますが、実行可能なようにそれを設定したい場合は

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

これは、いつでもコンテナが開始あなたのENTRYPOINTコマンドとしてのpostgresを実行すると、あなたはそれに接続することができるはずです。

+1

ありがとう@Colwin!あなたのコメントは正しい道に私を置いた。あなたのコマンドで1つのパスだけを変更し、それを "postgres"ユーザーとして実行する必要がありました。 ENTRYPOINT ["sudo"、 " - u"、 "postgres"、 "/ usr/pgsql-9.6/bin/postgres"、 " - D"、 "/ var/lib/pgsql/9.6 /データ "、" - p "、" 5432 "] – Sokrates

+0

私は@ソクラテスを助けることができました。あなたの新しいエントリーポイントで私の答えを更新しました。あなたの問題を解決するのに役立ったら、私の答えを受け入れてください。 – Colwin

+0

こんにちは@Colwin、私はしたいですが、私はそれを行うには十分な評判がないように見えます。私は正しい? – Sokrates

関連する問題