代码之家  ›  专栏  ›  技术社区  ›  joesan

无法从应用服务器连接到Postgres Docker Conatiner

  •  0
  • joesan  · 技术社区  · 2 年前

    我有一个Postgres镜像运行我的数据库,我将其作为Docker容器运行,我可以从psql连接到它,但当我从应用服务器连接到它时,我会收到以下错误:

    org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
    cpo-platform-server-cpo-platform-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:342)
    cpo-platform-server-cpo-platform-1  |   at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
    cpo-platform-server-cpo-platform-1  |   at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:263)
    cpo-platform-server-cpo-platform-1  |   at org.postgresql.Driver.makeConnection(Driver.java:443)
    cpo-platform-server-cpo-platform-1  |   at org.postgresql.Driver.connect(Driver.java:297)
    cpo-platform-server-cpo-platform-1  |   at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    cpo-platform-server-cpo-platform-1  |   at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    cpo-platform-server-cpo-platform-1  |   at doobie.util.transactor$Transactor$FromDriverManagerUnapplied.$anonfun$apply$19(transactor.scala:378)
    cpo-platform-server-cpo-platform-1  |   at doobie.util.transactor$Transactor$FromDriverManagerUnapplied.$anonfun$create$2(transactor.scala:347)
    cpo-platform-server-cpo-platform-1  |   at blocking @ doobie.util.transactor$Transactor$FromDriverManagerUnapplied.$anonfun$create$1(transactor.scala:347)
    cpo-platform-server-cpo-platform-1  |   at fromAutoCloseable @ doobie.util.transactor$Transactor$FromDriverManagerUnapplied.$anonfun$create$1(transactor.scala:347)
    cpo-platform-server-cpo-platform-1  |   at fromAutoCloseable @ doobie.util.transactor$Transactor$FromDriverManagerUnapplied.$anonfun$create$1(transactor.scala:347)
    cpo-platform-server-cpo-platform-1  |   at use @ doobie.util.transactor$Transactor$$anon$4.apply(transactor.scala:164)
    

    当我从一个运行应用程序服务器的Docker容器连接到另一个运行数据库的Docker集装箱时,有什么需要注意的吗?我使用docker compose来启动它们,如下所示:

    services:
      my-app:
        image: me/my-app-server:1.1-SNAPSHOT
        ports:
          - 127.0.0.1:9000:9000
        environment:
          configEnv: test
    
      my-db:
        image: my-db-postgres-test-container
        ports:
          - 127.0.0.1:5432:5432
    

    启动后,我可以使用psql连接到数据库,但通过应用程序服务器连接失败。凭据、数据库服务器等都配置正确,但仍然无法连接。

    有什么想法吗?

    1 回复  |  直到 2 年前
        1
  •  1
  •   ash    2 年前

    当启动了两个容器时,主机的暴露端口不会跨容器暴露。

    使用postgres容器的主机名, my-db 在您的情况下,而不是localhost,从 my-app

    推荐文章