2017-09-05 19 views
1

私はpostgresのドッキング用のコンテナを試しています。これまで私はコンテナ内のデータベースに接続することができませんでした。ドッカーコンテナPostgres接続エラー

以下の手順で問題を再現してください。

私はそう

$ docker build -t db_con . 

のようなドッキングウィンドウのファイルを構築し、

$ docker run -it -p 5432:5432 --name test_db db_con /bin/bash 

ビュー

以下のような容器を実行しているのコンテナを作成し

FROM postgres 
ENV POSTGRES_DB db 
ENV POSTGRES_USER postgres 
ENV POSTGRES_PASSWORD postgres 
COPY db_schema.sql /docker-entrypoint-initdb.d/ 

開始dockerfile

$ docker ps -a 

CONTAINER ID IMAGE COMMAND     CREATED  STATUS  PORTS     NAMES 
82347f1114c4 db "docker-entrypoint..."  3 hours ago Up 2 sec 0.0.0.0:5432->5432/tcp test_db 

私はアドレス情報のコンテナを検査..

$ docker inspect test_db 

--extract start-- 
"Networks": { 
       "bridge": { 
        "Gateway": "172.17.0.1", 
        "IPAddress": "172.17.0.2", 

       } 
      } 
--extract end-- 

は今、私は、コンテナ内で試してみましたが、私は成功していません。 以下のすべてのコマンドを以下のエラーで試しました。

[email protected]:/# psql -U postgres -h 0.0.0.0 -p 5432 -d db 
[email protected]:/# psql -U postgres -h 172.17.0.1 -p 5432 -d db 
[email protected]:/# psql -U postgres -h 172.17.0.2 -p 5432 -d db 
**response for all the above** 
psql: could not connect to server: Connection refused 
    Is the server running on host "0.0.0.0" and accepting 
    TCP/IP connections on port 5432? 

誰かが正しい方向に向けることができれば嬉しく思います。私はここに壁を打った、どんな援助も感謝しています。

+0

スキーマの作成、データベースインスタンスへの外部接続(つまり、コンテナのライフサイクルの外)などのすべての作業をお試しください。これはもっと便利なアプローチです。 –

答えて

1

デフォルトのpostgres cmdを/bin/bashに変更したようです。 なぜコマンドの最後に/bin/bashを入れますか?

docker run -it -p 5432:5432 --name test_db db_con /bin/bash 

docker run -it -p 5432:5432 --name test_db db_con 

を実行するようにしてください。また、Postgresはデシベルダンプが復元されたときにのみ使用可能になります。

+0

あなたのお勧めを使って完全に機能しているすべての点について、正しい答えをしてください。 – BlowMan

0

あなたはpg_hba.confの中で、新しいルールを追加する必要があります。

nano /etc/postgresql/9.3/main/pg_hba.conf 

追加:

host all    all    [Docker Server IP]/16   md5 

次に、あなたはpostgres.confでフォロー行のコメントを解除する必要があります。

listen_addresses = '*'     # what IP address(es) to listen on; 

ここで、postgresサービスを再起動してもう一度やり直してください。

関連する問題