事象
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
コマンドを再度実行したら
無事データベースを作成できました!
参考サイト