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

如何从docker-compose连接到Host PostgreSQL?

柯苗宣
2023-03-14

我有一台安装了PostgreSQL的服务器。我的所有服务都在容器中工作(docker-compose)。我想从容器中使用我的主机PostgreSQL。但是我有错误:

  Unable to obtain Jdbc connection from DataSource (jdbc:postgresql://localhost:5432/shop-bd) for user 'shop-bd-user': Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  SQL State  : 08001
  Error Code : 0
  Message    : Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

  Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
  Connection refused (Connection refused)

我的docker compose使用主机网络模式,如下所示:

version: '3'
services:
  shop:  
    container_name: shop
    build: ./shop
    hostname: shop
    restart: always   
    ports:
      - 8084:8084
    network_mode: "host"

我的数据库连接URL是:jdbc:postgresql://localhost:5432/shop-bd

共有3个答案

欧阳高昂
2023-03-14

注意:使用--net=host或network_mode:"host"将阻止您的容器向Eureka注册,并且会破坏您拥有的任何类型的API网关,除非它们都在同一网络上运行。

徐鸿达
2023-03-14

如果你在linux操作系统上,这可能会奏效。但这在Mac或Windows上不起作用。问题是当您使用--net=host时,您仍然不在主机网络上。这就是windows的docker工作方式的限制

您需要使用<code>docker.for.win而不是localhost。localhost作为主机。这是一个特殊的DNS名称,当您想引用主机localhost时,可在Docker for Windows上使用

洪彬
2023-03-14

更新的夏苡棓,2018

根据文档,从18.03版开始,使用<code>host.docker。内部因为DNS为我工作,而不指定--net=host,或network_mode:“host”

 类似资料:
  • 问题内容: 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 Docker-machine正常运行,并且能够通过docker-machine ssh连接。 但是无法从docker-compose连接。 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗? 如果它

  • 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 docker-machine运行正常,并且能够通过docker-machine SSH进行连接。 但无法从Docker-Compose连接。 无法连接到HTTP+UNIX上的Docker后台进程://var/run/Docker.sock-它正在运行吗? 如果它位于非标准位置

  • 这是我的: 和Dockerfile goparser: 连接MongoDB需要使用哪个地址?

  • 问题内容: 我收到一条错误消息,提示我无法连接到Docker守护程序。我调查了其他人遇到类似问题的答案,但没有帮助。我正在运行Ubuntu 15.10版本。我将尝试提供我所有的信息。 Docker版本 Docker-Compose版本 如果我尝试停止或启动服务,就会发生这种情况。 如果我跑步 任何帮助将不胜感激。让我知道您是否需要更多信息。 问题答案: 我发现了这个问题,似乎可以解决我的问题。 G

  • 问题内容: 我的django项目无法连接到postgres数据库容器。我该怎么办? 它在命令时崩溃。我知道docker run命令会创建一个新的容器,但是在docker-compose.yml中,bash包含了更多命令。它应该工作,不是吗? 我的: 我的: : 输出: 我使用:Windows 10 Docker 17.03.0-ce-win1-(10296)docker-compose版本1.11

  • 我有两个项目。第一个包含以下: 第二个项目有这个docker compose文件: 我可以很好地从命令行连接到我的Postgres数据库: 但是,当容器尝试连接时(在运行之后),它会失败,并表示 在编写Postgres连接URI时,关于docker-compose有什么特别的地方需要说明吗? 非常感谢任何帮助。