【问题标题】:Docker Postgresql connection refusedDocker Postgresql 连接被拒绝
【发布时间】:2018-11-19 18:10:40
【问题描述】:

我一直在尝试 dockerize 我的网络应用程序,到目前为止一切都(大部分)顺利!除了现在我正在尝试在 postgreql 中连接(对不起,如果措辞不正确),因为应用程序连接到 psql DB 以进行登录和存储内容。

我在 SO 上的一篇文章中读到,我需要通过将 ports: -"5432:5432" 添加到 docker-compose.yml 来将数据库映射到我的本地机器。 (这里是引用的问题Docker Compose + Postgres: Expose port

但是现在,每当我尝试执行任何需要访问数据库的操作时,都会收到连接被拒绝错误。

这里是docker-compose.yml

version: '3.1'

services:
  drools-average-docker-app:
    image: drools-average-docker-image
    build:
        context: ./
        dockerfile: Dockerfile
    ports:
        - 8080:8080
  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: 'droolsTestDB'
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
    ports:
        - "5432:5432"

我还在某处读到可能是iptables 阻塞了连接?所以以防万一,这里是iptables.rules

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [8:411]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT

【问题讨论】:

  • 应用中使用的数据库连接是什么?通常不需要将端口 5432 暴露给主机。而是连接到主机 db 上的端口 5432。
  • 我用jdbc连接spring.datasource.url=jdbc:postgresql://localhost/droolsTestDB,postgres作为用户和密码

标签: postgresql docker docker-compose iptables


【解决方案1】:

在您编写的您使用的 cmets 中

spring.datasource.url=jdbc:postgresql://localhost/droolsTestDB

连接到数据库。将其更改为

spring.datasource.url=jdbc:postgresql://db/droolsTestDB

即使不将端口 5432 暴露给主机,它也应该可以工作。

背景:每个 docker 容器都有自己的网络接口,对应于该特定容器的 localhost。因此,从容器内连接到localhost 将不会连接到主机或其他容器。由于docker-compose 提供自动DNS 解析,因此很容易通过名称来引用其他服务。

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 2017-08-05
    • 2021-09-20
    • 1970-01-01
    • 2012-06-05
    • 2017-07-10
    • 2018-07-03
    • 2020-02-22
    • 2016-02-14
    相关资源
    最近更新 更多