エンジニアの卵の成長日記

https://blog.toru-takagi.dev/profile/

Laradockを使っていて、Postgresに接続できなかった問題

目次
1. 背景
2. 解決策
3. 余談


1. 背景


バイト先でLaradockを使っているのだが,Postgresに接続できない問題があった.

ローカルからLaradockでのPostgresに

 ホスト:localhost
 ユーザ:default
 パスワード:secret
 ポート:5432
 データベース:default

で接続しようとするとできなかった.

ローカル環境には,Laradockで作ったものではなく,brewコマンドでインストールしたPostgresが起動していた.

brewコマンドで入れたPostgresに対しての接続はできた.

同じポート5432に2つ作ることはできないだろうけど,

ここらへんはDockerの知識が足りないため,勉強しようと思います.

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. 余談


※パートナーさんが同じようなはまり方をしていたのだが,
パートナーさんは,コンテナのデータなどを消して,
ほとんど一から環境を作りなおしたら,うまく接続できるようになっていた.