Laradockを使っていて、Postgresに接続できなかった問題
1. 背景
バイト先でLaradockを使っているのだが,Postgresに接続できない問題があった.
ローカルからLaradockでのPostgresに
ホスト:localhost
ユーザ:default
パスワード:secret
ポート:5432
データベース:default
で接続しようとするとできなかった.
ローカル環境には,Laradockで作ったものではなく,brewコマンドでインストールしたPostgresが起動していた.
brewコマンドで入れたPostgresに対しての接続はできた.
同じポート5432に2つ作ることはできないだろうけど,
ここらへんはDockerの知識が足りないため,勉強しようと思います.
Dockerに対する知識が足りないな
— 高木徹 (@TTrpbm) 2017年9月5日
ちゃんと勉強しないと
brewコマンドで起動したPostgresを落とせばいいのだろうが,
こちらも違う環境で使っていて,デーモン化?で自動起動するようになっているので,
後で面倒になりそうだから,止めたくない.
ワークスペースに入って,Postgresに接続しようとするが,
以下のようなエラーが出る.
$ docker-compose exec workspace bash # psql -l psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?psql: could not connect to server: No such file or directory
/var/run/ ディレクトリまでは存在するのだが,postgresqlというディレクトリは見当たらない.
色々調べて,試したのだが解決しない.
2. 解決策
自分が取った解決策は,
ローカルのポート?を変えて,Dockerのコンテナ内のポート?に接続するという方法
docker-compose.yml
### PostgreSQL Container #################################### # - "${POSTGRES_PORT}:5432" - "5444:5432" ### PostgreSQL PostGis Container ############################ # - "${POSTGRES_PORT}:5432" - "5444:5432"
PostgreSQLって書いてあるやつは,全部変えちゃったけど,多分どっちかで大丈夫そう笑.
反映されているか,確認
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES hoge laradock_apache2 "hoge " 10 minutes ago Up 10 minutes 0.0.0.0:443->443/tcp, 0.0.0.0:8001->80/tcp laradock_apache2_1 hoge laradock_php-fpm "hoge " 10 minutes ago Up 10 minutes 9000/tcp laradock_php-fpm_1 hoge laradock_workspace "hoge " 10 minutes ago Up 10 minutes 0.0.0.0:2222->22/tcp laradock_workspace_1 hoge laradock_postgres "hoge " 10 minutes ago Up 10 minutes 0.0.0.0:5444->5432/tcp laradock_postgres_1
ローカルからLaradockでのPostgresに
ホスト:localhost
ユーザ:default
パスワード:secret
ポート:5444
データベース:default
接続することができた.
これであってはいないと思うのだが,一応僕はこの方法で解決した.
3. 余談
※パートナーさんが同じようなはまり方をしていたのだが,
パートナーさんは,コンテナのデータなどを消して,
ほとんど一から環境を作りなおしたら,うまく接続できるようになっていた.