postgresql dockerに接続中(ホストから接続できません)

postgresql dockerに接続中(ホストから接続できません)

以前はすべてがうまくいきましたが、突然動作しませんでした。このdockerは、ライブラリgithub.com/ory/dockertest、ポート49157/tcpを5432に渡して構築します。

docker ps 
CONTAINER ID   IMAGE                  COMMAND                  CREATED
0fe02164c0d3   postgres:11.4-alpine   "docker-entrypoint.s…"   8 minutes ago   

STATUS         PORTS                                         NAMES
Up 8 minutes   0.0.0.0:49157->5432/tcp, :::49157->5432/tcp   laughing_gould

DockerのNetstatは大丈夫です。

docker exec -it  0fe02164c0d3 bash

bash-5.0# netstat -antp 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      -
tcp        0      0 :::5432                 :::*                    LISTEN      -

bash-5.0# psql -U foo -h 127.0.0.1 -p 5432 foodb
psql (11.4)
Type "help" for help.

foodb=# 

ログがよさそうです。

docker logs
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /pgtmpfs ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... UTC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
sh: locale: not found
2021-10-04 20:30:27.355 UTC [28] WARNING:  no usable system locales were found
performing post-bootstrap initialization ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
syncing data to disk ... ok

Success. You can now start the database server using:

    pg_ctl -D /pgtmpfs -l logfile start

waiting for server to start....2021-10-04 20:30:42.460 UTC [32] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2021-10-04 20:30:42.599 UTC [33] LOG:  database system was shut down at 2021-10-04 20:30:27 UTC
2021-10-04 20:30:42.641 UTC [32] LOG:  database system is ready to accept connections
 done
server started
CREATE DATABASE


/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*

waiting for server to shut down....2021-10-04 20:30:47.348 UTC [32] LOG:  received fast shutdown request
2021-10-04 20:30:47.406 UTC [32] LOG:  aborting any active transactions
2021-10-04 20:30:47.406 UTC [32] LOG:  background worker "logical replication launcher" (PID 39) exited with exit code 1
2021-10-04 20:30:47.407 UTC [34] LOG:  shutting down
2021-10-04 20:30:47.533 UTC [32] LOG:  database system is shut down
 done
server stopped

PostgreSQL init process complete; ready for start up.

2021-10-04 20:30:47.562 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2021-10-04 20:30:47.562 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2021-10-04 20:30:47.593 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2021-10-04 20:30:47.676 UTC [43] LOG:  database system was shut down at 2021-10-04 20:30:47 UTC
2021-10-04 20:30:47.684 UTC [1] LOG:  database system is ready to accept connections

ホストのNetstatも機能します。

netstat -antp | grep 49157
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:49157           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::49157                :::*                    LISTEN      - 

このポートに Telnet で接続することもできます。

telnet localhost 49157 
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]

ただし、ホストがそのドッカーに接続しようとすると、常にタイムアウトが発生します。理由は何ですか?

psql -h 127.0.0.1 -U foo -p 49157 foodb
psql: error: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.

修正するまた、ホストのnginxでは動作しませんが、dockerの内部では問題ありません。

ベストアンサー1

おすすめ記事