编辑2:经过很长一段时间,解决了!请参阅下面的答案。
编辑:我很遗憾地说,昨天和今天之间的问题“自己”消失了,没有我做过任何事情。这里要学习很好的非确定性课程...... 额外的乐趣:“无法绑定IPv6套接字”错误仍然出现在错误日志中,所以这可能首先不是问题。我遇到了以前正在运行的docker PGSQL映像的问题。直到昨天没有灵感的重建(:-D),我在过去的5个多月里成功地使用了这个版本。
我的系统:
问题(来自PGSQL日志的代码段):
...
日志:无法绑定IPv6套接字:无法分配请求的地址
提示:另一位邮局管理员是否已在5432端口上运行?如果没有,请等待几秒钟然后重试。
...
ss 正在告诉我(当容器正在运行时,显然):
$ docker exec -it db ss -atune
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp ESTAB 0 0 127.0.0.1:45876 127.0.0.1:45876 uid:999 ino:147509 sk:00000001 <->
tcp LISTEN 0 128 127.0.0.1:5432 *:* uid:999 ino:147500 sk:00000002 <->
我已经清理了所有的docker容器/图像,我重新安装了docker,没有任何帮助。谁可能在容器中使用5432端口? 就此而言,我是否正确阅读,PGSQL抱怨已经在docker容器中使用了5432端口?
即使您没有解决方案,如何继续进行调试也是一个很好的帮助。
编辑:
postgres.docker文件
FROM postgres:9.6.4
ADD bin/postgres-setup.sh /docker-entrypoint-initdb.d/postgres-setup.sh
RUN chmod 755 /docker-entrypoint-initdb.d/postgres-setup.sh && \
apt-get update && \
apt-get install -y --no-install-recommends postgresql-plpython3-9.6 python3-pip postgresql-9.6-pldebugger && \
pip3 install pyexcel pyexcel-xls pyexcel-xlsx pyexcel-xlsxw
答案 0 :(得分:6)
很长一段时间后,我们终于弄清了问题所在,在这里添加了说明,以防其他人得到帮助。
由于pgsql默认情况下仅侦听localhost,因此当它在具有端口映射配置的docker容器中运行时,外部API无法连接到pgsql服务器。
解决方案是允许pgsql侦听所有IP地址:
连接到数据库容器外壳:$ docker exec -ti db bash
更改配置文件/var/lib/postgresql/data/postgresql.conf以允许pgsql侦听所有IP:listen_addresses = '*'
答案 1 :(得分:0)
必须对postgres.conf
和pg_hba.conf
文件进行某些编辑,以使容器内的Postgres侦听来自主机的连接:
请参见cityseer/postgis
回购中的Gotchas
部分。
postgresql.conf
文件中的listen_addresses
项目是否未注释,并设置为侦听所有端口,即listen_addresses = '*'
; 检查您的pg_hba.conf
文件是否允许docker容器的Postgres按照以下两行提供本地访问和主机访问:
local all all trust
host all all 0.0.0.0/0 trust