【Laravel】LaradockでPostgreSQLを起動できないときの対処法


事象

psqlでデータベースを作ることを試みるが以下のエラーが発生し、失敗。

laradock % docker-compose exec workspace psql -U default -h postgres
psql: could not translate host name "postgres" to address: Name or service not known
laradock % docker-compose exec workspace psql -U default -h postgres
psql: could not connect to server: Connection refused
    Is the server running on host "postgres" (172.21.0.4) and accepting
    TCP/IP connections on port 5432?

確認事項と解消法

1. 本当にコンテナは起動しているのか?

docker-compose up -dコマンドで全てdoneになっていたが本当に起動しているか
docker-compose psコマンドで確認する。

laradock % docker-compose ps
         Name                        Command               State            Ports         
------------------------------------------------------------------------------------------
laravel-sns_nginx_1       /docker-entrypoint.sh ngin ...   Up       0.0.0.0:80->80/tcp    
laravel-sns_php-fpm_1     docker-php-entrypoint php-fpm    Up       0.0.0.0:9000->9000/tcp
laravel-sns_postgres_1    docker-entrypoint.sh postgres    Exit 1                         
laravel-sns_workspace_1   docker-php-entrypoint php-fpm    Up       9000/tcp

起動できていないことを確認し、docker-compose up -dコマンドを再度実行してみる。

laradock % docker-compose ps   
         Name                        Command               State                       Ports                     
-----------------------------------------------------------------------------------------------------------------
laravel-sns_mailhog_1     MailHog                          Up      0.0.0.0:1025->1025/tcp, 0.0.0.0:8025->8025/tcp
laravel-sns_nginx_1       /docker-entrypoint.sh ngin ...   Up      0.0.0.0:80->80/tcp                            
laravel-sns_php-fpm_1     docker-php-entrypoint php-fpm    Up      0.0.0.0:9000->9000/tcp                        
laravel-sns_postgres_1    docker-entrypoint.sh postgres    Up      0.0.0.0:5432->5432/tcp                        
laravel-sns_workspace_1   docker-php-entrypoint php-fpm    Up      9000/tcp 

全て起動した!

2. laradock配下の.envファイルの確認

laradock配下の.envファイルのDATA_PATH_HOSTを確認。
デフォルトだと以下のようになっている。

DATA_PATH_HOST=~/.laradock/data

デフォルトのままだとローカルPCの共通のディレクトリを参照してしまうので動きません。
以下のように変更をします。

DATA_PATH_HOST=../data

3. postgresql.confファイルのポート番号を確認

私はここを確認し、解消しました。
dataディレクトリにあるpostgresql.confファイルのポート番号を確認。

# port = 5432               # (change requires restart)

あれ?5433じゃね?しかもコメントアウトされてる...
ということで修正し、docker-compose up -dコマンドを再度実行したら
無事データベースを作成できました!

参考サイト