当前位置: 首页 > 知识库问答 >
问题:

带Python Web应用程序的Docker容器-连接到主机(OSX)上的Postgres

魏学智
2023-03-14

我可以在我的web应用程序中连接到我的本地Postgres DB,但如果我在Docker容器中运行web应用程序,则无法连接。

  • 在泊坞站容器内运行的 Web 应用
  • 在主机中运行的 postgres

我不确定它是否与 Postgres 连接设置或与 Docker 网络设置相关。

遵循我的设置和命令:

主持人:

    < li>OSX 10.11.6 < li>PostgreSQL 9.6

码头集装箱

  • 泊坞窗 1.13.1
  • Docker-machine 0.9.0
  • Docker container OS: 蟒蛇:3.6.0-阿尔卑斯
  • 蟒蛇 3.6 心理医生 2==2.7

postgresql.conf:

listen_addresses = '*'

pg_hba.conf

host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust
host    all             all             172.17.0.0/24           trust
host    all             all             192.168.99.0/24       trust
docker run -i --net=host -h 127.0.0.1 -e POSTGRES_URI=postgresql://127.0.0.1:5432/db my/image

错误:

无法连接到服务器:连接被拒绝
服务器是否在主机“127.0.0.1”上运行,并接受端口5432上的TCP/IP连接?

docker run -i --add-host=dockerhost:`docker-machine ip ${DOCKER_MACHINE}` -e POSTGRES_URI=postgresql://dockerhost:5432/db -p 8000:8000 -p 5432:5432 my/image

错误:

服务器意外关闭连接<br>这可能意味着服务器在处理请求之前或期间异常终止。

有什么想法吗?

共有1个答案

沃皓轩
2023-03-14

文档中有一个关于这样做的说明

我想从容器连接到主机上的服务

Mac 的 IP 地址在不断变化(如果您没有网络访问权限,则为无)。我们目前的建议是将未使用的IP附加到Mac上的lo0接口;例如:sudo ifconfig lo0 别名 10.200.10.1/24,并确保服务正在侦听此地址或 0.0.0.0(即不是 127.0.0.1)。然后,容器可以连接到此地址。

 类似资料:
  • 问题内容: 所以我想连接到我在主机上运行的mongodb(DO Drop,Ubuntu 16.04)。它在localhost 的默认端口上运行。 然后,我使用mup将我的Meteor应用程序部署在我的DO Drop上,该DO Drop使用docker在容器内运行Meteor应用程序。到目前为止,一切都很好。使用标准连接URL将应用程序连接到mongodb。现在我有以下问题: 显然不能在docker

  • (由于我对Docker或mysql管理的了解有限,这可能是一个愚蠢的问题,但由于我花了整整一个晚上讨论这个问题,所以我敢问这个问题。) 概括地说 我想在docker容器中运行mysql,并从我的主机连接到它。到目前为止,我取得的最好成绩是: 更多详细信息 我正在使用以下: 在有此文件的目录中,我可以成功地构建映像并运行它: 当我连接到图像上时,它似乎工作得很好: 然而,我并没有从主持人那里获得那么

  • 在Windows上: 我刚刚通过创建了应用程序,并为此创建了Dockerfile: 然后我打开wsl2,进入并构建了并启动了它。 我看到它在跑 还有正确的日志: 但是我不确定我怎么能连接到它?

  • 问题内容: 我正在练习制作一个与PostgreSQL数据库交互的Golang Web应用程序,每个应用程序都在各自的容器上运行。 我正在运行容器 但是我似乎无法正确设置postgres容器。 为简便起见,指向s和其他设置文件的链接位于此要点上(如果您需要在此处,请告诉我)。 工作良好。但是,当应用程序尝试使用以下方法打开数据库连接时: 我从docker compose得到以下错误: 如何使两个容器

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839

  • 我有一个Java应用程序在Docker容器中运行,在另一个容器中运行。 如何连接容器以在Java应用程序中使用<code>rabbitmq</code>?