Previously it was ok/works normally, but suddenly it didn't work, these docker spawned using library github.com/ory/dockertest
with port 49157/tcp forwarded to 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
netstat inside docker is ok:
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=#
the logs seems fine:
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 from host also ok:
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 to that port also ok:
telnet localhost 49157 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. ^]
but when try to connect from host to that docker, it's always timeout, what's the possible cause of this?
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.
UPDATE didn't work too for nginx from host, but ok when inside docker.
docker exec -it <container id> psql
?psql -h 127.0.0.1 -U foo -p 5432
) inside docker exec