gpt4 book ai didi

PostgreSQL docker : "could not bind IPv6 socket: Cannot assign requested address"

转载 作者:行者123 更新时间:2023-11-29 11:26:36 28 4
gpt4 key购买 nike

编辑 2: 很长一段时间后,解决了!请参阅下面的答案。

编辑:我很遗憾地说,这些问题从昨天到今天“自行”消失了,而我什么也没做。在这里学习很好的非确定性类(class)......额外的乐趣:“无法绑定(bind) IPv6 套接字”错误仍然出现在错误日志中,所以这可能根本不是问题所在。

我对之前正常运行的 docker PGSQL 镜像有疑问。直到昨天 (:-D) 进行了一次毫无灵感的重建,在过去的 5 个多月里,我已经成功地使用了这个构建。

我的系统:

  • Ubuntu 17.04 64b
  • PGSQL 9.6.4
  • Docker 版本 17.11.0-ce,构建 1caf76c
  • 我正在将主机端口 5433 映射到容器端口 5432

问题(来自 PGSQL 日志的片段):

...

LOG: could not bind IPv6 socket: Cannot assign requested address

HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.

...

这就是 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 提示 5432 端口已在 docker 容器中使用?

即使您没有解决方案,了解如何进行调试的基本概念也会有很大帮助。

编辑:

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

最佳答案

经过很长一段时间,我们终于弄清楚了问题所在——在这里添加解释,以防对其他人有所帮助。

由于 pgsql 默认只监听 localhost,当它运行在 docker 容器中时,我们有端口映射配置,外部 API 无法连接到 pgsql 服务器。

解决方案是让pgsql监听所有IP地址:

  1. 连接到数据库容器外壳:$ docker exec -ti db bash

  2. 更改配置文件 /var/lib/postgresql/data/postgresql.conf 以允许 pgsql 监听所有 IP:listen_addresses = '*'

关于PostgreSQL docker : "could not bind IPv6 socket: Cannot assign requested address",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47890233/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com