概要
- 下記のコマンドを実行すると、エラーが出てしまう。
$ docker-compose exec workspace psql -U default -h postgres
psql: error: could not translate host name "postgres" to address: Name or service not known
-
docker-compose up
でコンテナを作成している。 - しかし、
docker-compose ps
するとpostgresの部分の「State」が「Exit 1」となっている。
$ docker-compose up -d workspace php-fpm nginx postgres
Creating network "laravel-app_default" with the default driver
Creating laravel-app_workspace_1 ... done
Creating laravel-app_php-fpm_1 ... done
Creating laravel-app_nginx_1 ... done
Creating laravel-app_postgres_1 ... done
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------
laravel-app_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp,:::80->80/tcp
laravel-app_php-fpm_1 docker-php-entrypoint php-fpm Up 0.0.0.0:9001->9000/tcp,:::9001->9000/tcp
laravel-app_postgres_1 docker-entrypoint.sh postgres Exit 1
laravel-app_workspace_1 docker-php-entrypoint php-fpm Up 9000/tcp
原因
下記のログで「pg_tblspc」、「pg_replslot」がないので開けないと言われておりますが、正直わかってないです。引き続き調査しておりますが、分かり次第更新したいと思っております。。
解決法(※暫定処置)
docker-compose logs
でエラーの内容を確認する。
$ docker-compose logs
postgres_1 |
postgres_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_1 |
postgres_1 | 2022-02-27 05:31:40.430 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgres_1 | 2022-02-27 05:31:40.430 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgres_1 | 2022-02-27 05:31:40.433 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1 | 2022-02-27 05:31:40.460 UTC [1] LOG: could not open directory "pg_tblspc": No such file or directory
postgres_1 | 2022-02-27 05:31:40.468 UTC [23] LOG: database system shutdown was interrupted; last known up at 2022-02-23 11:11:08 UTC
postgres_1 | 2022-02-27 05:31:42.871 UTC [23] LOG: could not open directory "pg_tblspc": No such file or directory
postgres_1 | 2022-02-27 05:31:42.881 UTC [23] LOG: could not open directory "pg_tblspc": No such file or directory
postgres_1 | 2022-02-27 05:31:42.882 UTC [23] FATAL: could not open directory "pg_replslot": No such file or directory
postgres_1 | 2022-02-27 05:31:42.883 UTC [1] LOG: startup process (PID 23) exited with exit code 1
postgres_1 | 2022-02-27 05:31:42.883 UTC [1] LOG: aborting startup due to startup process failure
postgres_1 | 2022-02-27 05:31:42.888 UTC [1] LOG: database system is shut down
- プロジェクト配下の
laravel-app/data
ディレクトリ を削除する。 -
docker-compose down --rmi all --volumes --remove-orphans
コマンドでコンテナを一掃する。 - 再度
docker-compose up -d workspace php-fpm nginx postgres
を実行でコンテナを再作成する。 -
docker-compose ps
で再度「State」を確認する。
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
laravel-app_nginx_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:80->80/tcp,:::80->80/tcp
laravel-app_php-fpm_1 docker-php-entrypoint php-fpm Up 0.0.0.0:9001->9000/tcp,:::9001->9000/tcp
laravel-app_postgres_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp,:::5432->5432/tcp
laravel-app_workspace_1 docker-php-entrypoint php-fpm Up 9000/tcp
-
docker-compose exec workspace psql -U default -h postgres
を再度実行で作成できた。