【问题标题】:Trouble connecting to postgres from docker-compose on ubuntu在 ubuntu 上从 docker-compose 连接到 postgres 时出现问题
【发布时间】:2019-06-25 14:27:34
【问题描述】:

我正在尝试从 docker-compose.yml 文件连接到在数字海洋上托管的 Ubuntu 18.04 上运行的 postgres 数据库。 .yml 文件包含以下内容:

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.32
    restart: always
    ports:
      - '4466:4466'
    environment:
      PRISMA_CONFIG: |
        port: 4466
        # uncomment the next line and provide the env var PRISMA_MANAGEMENT_API_SECRET=my-secret to activate cluster security
        # managementApiSecret: my-secret
        databases:
          default:
            connector: postgres
            host: droplet-ip
            database: my-database
            user: my-user
            password: my-password
            rawAccess: false
            port: 5432
            migrations: true

我尝试过使用 'localhost'、'127.0.0.1' 和 'host.docker.internal' 作为主机,但都不起作用。我已将 pg_hba.conf 配置为侦听范围 127.0.0.1/16 和 postgresql.conf 的 listen_address = '*'。尝试连接时,我从 postgres 收到以下日志:

No log level set, defaulting to INFO.
[INFO] {} - Started.
Jun 25, 2019 2:10:40 PM org.postgresql.core.v3.ConnectionFactoryImpl log
WARNING: IOException occurred while connecting to droplet-ip:5432
java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.postgresql.core.PGStream.<init>(PGStream.java:69)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:452)
    at org.postgresql.Driver.connect(Driver.java:254)
    at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
    at slick.jdbc.DataSourceJdbcDataSource.createConnection(JdbcDataSource.scala:68)
    at slick.jdbc.JdbcBackend$BaseSession.<init>(JdbcBackend.scala:453)
    at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46)
    at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37)
    at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:249)
    at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:248)
    at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37)
    at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:274)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Jun 25, 2019 2:10:40 PM org.postgresql.core.v3.ConnectionFactoryImpl log
WARNING: IOException occurred while connecting to 68.183.40.242:5432
java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.postgresql.core.PGStream.<init>(PGStream.java:69)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:452)
    at org.postgresql.Driver.connect(Driver.java:254)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:95)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
    at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
    at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

我正在使用 docker-compose、ubuntu 18.04 和 postgreSQL 10。

知道我可能会在哪里出错吗?

【问题讨论】:

  • 您是尝试从 Docker 主机连接到客户机还是从客户机连接到主机?
  • 我不确定您在这里的访客是什么意思,docker-compose 文件和 postgres 都在我的 ubuntu 实例上。
  • host是运行Docker的操作系统,guest是运行在Docker实例内部的操作系统,PostgreSQL安装在哪里?它是否在 docker 实例中运行?它是否在主机操作系统(Ubuntu)上运行?
  • 两者都在 ubuntu 上运行。 PostgreSQL 安装在主机操作系统上,我没有使用 postgres 映像。

标签: postgresql docker docker-compose digital-ocean


【解决方案1】:

尝试在您的 docker-compose.yml 中使用它:

network: host

并更改 docker-compose.yml 中的 IPs 以使用您在 UBUNTU 上使用的内容,或者您​​现在可以简单地使用 localhost

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 2022-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2020-04-27
    相关资源
    最近更新 更多