質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

3回答

2236閲覧

local環境のdockerのコンテナ内のdbをposticoでみたい

you88

総合スコア147

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1グッド

0クリップ

投稿2020/03/14 03:44

dockerを使ってlocal環境で開発しており、postgresqlを使っています。local開発環境のdbの値をpostico経由で見たいのですが

could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5433? could not connect to server: Connection refused Is the server running on host "localhost" (fe80::1) and accepting TCP/IP connections on port 5433? could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5433?

と出てしまいます。dockerfileなどは下記設定です。railsで開発しています。

version: '3' services: db: image: postgres:9.5.18 volumes: - ./docker/pg:/var/lib/postgresql environment: POSTGRES_PASSWORD: password POSTGRES_USER: localhost POSTGRES_DB: test_db ports: - '5433:5432' web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/myapp ports: - "3000:3000" depends_on: - db

database.yml

default: &default adapter: postgresql encoding: unicode host: db username: postgres password: password pool: 5 development: <<: *default database: myapp_development test: <<: *default database: myapp_test

posticoの設定は下記

イメージ説明

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takumiboo

2020/03/14 04:55

コンテナは立ち上がっていることを確認できていますか?
you88

2020/03/14 05:36

はい、立ち上がっています!
bsdfan

2020/03/15 11:42

dockerの環境はなんでしょうか?
you88

2020/03/15 12:21

for macです! dockercomposeでdbとwebを立ち上げています。
bsdfan

2020/03/16 06:20

Docker Toolboxでlocalhostにつながらないという、よくあるパターンではなさそうですね。 postico以外のツール(psqlとか)で試してみて、問題を切り分けてみてはどうでしょう。
guest

回答3

0

自己解決

databse.ymlのusernameとdocker-compose.ymlのPOSTGRES_USERが一致していないという初歩的ミスでした。協力いただいた方々ありがとうございました!

投稿2020/03/27 14:25

you88

総合スコア147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogya

2020/03/28 01:39

database.ymlはposticoに関係ないような気がするのですが、解決したのならまあいいか。 localhostは普通マシン名(自分のIPアドレスを示す)につかう名前で、ユーザー名にはあまり使わないのですよね。問題と関係なさそうなので、混乱させちゃいけないと思って言わずにおいたのですが、これが答えなら、言っておけばもっと早く解決したかもしれないですね。世の中難しいもんです????
you88

2020/03/28 01:46

いやはやすみません。そうすねposticoってかそもそもの設定部分の間違えでした。。。 でも丁寧に教えてもらったおかげで理解深まりました!ありがとうございました!
guest

0

最初のdocker-compose runで接続する場合は以下のようにすればいけると思います。

docker-compose run db psql -U localhost -d test_db -h db -p 5432

二番目のdocker-compose execでログインしてから接続できないのは謎ですね。。。
lirliaさんがおっしゃっているように正常にListenしているか確認したほうが良いですね。
dockerのposgresはdebianで動いているようなので、以下のパッケージをインストールすれば確認できます。

apt-get update apt-get install net-tools netstat -antl

投稿2020/03/26 04:04

編集2020/03/26 04:13
hyakusho

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

you88

2020/03/26 12:56

これでpasswordの入力が出たんですがPOSTGRES_PASSWORD: passwordのpasswordと打ってもダメでした泣 passってどこで設定したのを使えばいいんでしょうか?(初歩的な質問すみません)
hyakusho

2020/03/26 14:15

パスワードはPOSTGRES_PASSWORDのpasswordで合ってます。 パスワードのプロンプトが返ってきたってことは、dockerのpostgresは正常に5432ポートでリッスンできているようですね。 こういう時は、大概しょうもないミス(typoとか)だったりするので、落ち着いてもう一度最初から作り直すと解決することがよくあります。
bsdfan

2020/03/26 14:43

database.ymlだとユーザー名がlocalhostではなくpostgresになってます。 railsが動いているなら、ユーザー名が違っていそうです。
guest

0

コピペしたものをdocker-compose.ymlに貼り付けて試してみたけど、普通に繋がりますねえ。

イメージ説明
イメージ説明

切り分けの手順としては、

  1. アプリじゃなくてpsqlで試してみる
$ psql -U localhost -d test_db -h localhost -p 5433 Password for user localhost: psql (12.2, server 9.5.18) Type "help" for help. test_db=# \q

これでつながるようなら、postico自体やその設定が怪しい。
つながらないようなら別の問題なので2.へ

2.コンテナ内からつないで見る

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f0b3ad031173 postgres:9.5.18 "docker-entrypoint.s…" 9 hours ago Up 12 minutes 0.0.0.0:5433->5432/tcp teratail_247008_db_1 $ docker exec -it teratail_247008_db_1 bash root@f0b3ad031173:/# psql -U localhost -d test_db -h localhost -p 5432 psql (9.5.18) Type "help" for help. test_db=# \q

docker exec -it の後ろにつける"teratail_247008_db_1" 部分は環境によって名前が変わるので、docker psで出てきたNAMES部分(一番右端)の名前を使ってください

これでつながるのであれば、dockerのネットワークあたりの設定が怪しいです。

ports: - '5433:5432'

とわざわざポート番号を変更していると、ポート指定間違いとかが起きやすいので、5432:5432にして試すのがいいんじゃないかと。

一方コンテナ内のpsqlすらつながらない場合、postgresの起動自体が怪しくなってきます。

root@f0b3ad031173:/# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND postgres 1 0.0 1.1 274544 23084 ? Ss 20:56 0:00 postgres postgres 23 0.0 0.1 274544 3696 ? Ss 20:56 0:00 postgres: checkpointer process :

という具合にしてpostgresのプロセスがいるかどうかを確認します

bashとps auxしかいないようであれば、起動に失敗している可能性が高いので、コンテナから抜けて外から

$ docker-compose logs db

で起動時のログを見てみましょう。

投稿2020/03/21 21:33

mogya

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

you88

2020/03/22 01:59

回答ありがとうございます!しかもめちゃくちゃ分かりやすい! 1のpsqlを試すだと ``` muraokayouhei@muraokaheinoMBP kaomojimaker % docker-compose run db psql -U localhost -d test_db -h localhost -p 5433 psql: could not connect to server: Connection refused ``` でつながらず。多分posticoじゃなくてpostgres自体なんだろうなと 2のdocker execでの確認でも下記が出たので ``` muraokayouhei@muraokaheinoMBP kaomojimaker % docker exec -it kaomojimaker_db_1 bash root@c22ae0834647:/# psql -U localhost -d test_db -h localhost -p 5432 psql: FATAL: role "localhost" does not exist ``` つながらずps auxでpostgresの起動を確認したんですが下記でbash、aux以外も出ていたので起動自体はしているのかな?という状態です ``` root@c22ae0834647:/# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND postgres 1 0.0 1.1 274528 23056 ? Ss 01:24 0:00 postgres postgres 25 0.0 0.1 274528 3704 ? Ss 01:24 0:00 postgres: checkpointer process postgres 26 0.0 0.2 274528 5368 ? Ss 01:24 0:00 postgres: writer process postgres 27 0.0 0.1 274528 3704 ? Ss 01:24 0:00 postgres: wal writer process postgres 28 0.0 0.3 274956 6336 ? Ss 01:24 0:00 postgres: autovacuum launcher process postgres 29 0.0 0.1 129644 2752 ? Ss 01:24 0:00 postgres: stats collector process root 38 0.0 0.1 19868 3676 pts/0 Ss 01:25 0:00 bash root 84 0.0 0.1 38308 3152 pts/0 R+ 01:32 0:00 ps aux ``` postgresの起動はできているのかなということでdockercomposeのport番号などを変更して試してみます!
lirlia

2020/03/25 21:43

netstat -antp などできちんとListenしているかを確認されると良いかと思います。
you88

2020/03/26 13:15

% sudo lsof -i -P | grep "LISTEN"で確認してみました!下記が出てきたのでポートはちゃんと設定できているとみて良さそうでしょうか? ``` com.docke 19611 muraokayouhei 43u IPv6 0xb9a7b833b3b1d59b 0t0 TCP *:5432 (LISTEN) com.docke 19611 muraokayouhei 45u IPv6 0xb9a7b833b3b1f43b 0t0 TCP *:3000 (LISTEN) ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問