【问题标题】:Docker Compose Tomcat Can not connect to postgresqlDocker Compose Tomcat 无法连接到 postgresql
【发布时间】:2019-09-28 14:40:24
【问题描述】:

我有 2 个容器。其中一个是postgresql,一个是tomcat。 我试图启动应用程序,但总是得到 o.h.e.jdbc.spi.SqlExceptionHelper - 连接被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。错误。请帮帮我,我没有太多时间。 最好的问候。

我尝试了不同类型的 docker compose。但我总是遇到同样的错误。

16:48:09.557 [localhost-startStop-1] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

我的连接网址

db.user=admin
db.password=123456
db.url=jdbc:postgresql://moneytransferdb:5410/moneytransfer

我的 docker 撰写 yml

version: '3'

services:
  moneytransferdb:
   image: postgres
   restart: always
   ports:
     - "5410:5432"
   volumes:
     - mydatavol:/var/lib/postgresql/data
   environment:
     POSTGRES_USER: admin
     POSTGRES_PASSWORD: 123456
     POSTGRES_DB: moneytransfer
   container_name: moneytransfer
   networks:
     - main
  tomcat:
    image: tomcat
    ports:
     - "8080:8080"
    volumes:
     - ../tcmb/tcmb-service.war:/usr/local/tomcat/webapps/tcmb.war
    container_name: tcmb
    depends_on:
     - moneytransferdb
    links:
     - moneytransferdb
    restart: always
    networks:
     - main
volumes:
  mydatavol: {}
networks:
  main:

【问题讨论】:

  • 对于容器间通信,您始终需要服务内部端口,此处为 5432。除非您希望从 Docker 空间外部访问数据库,否则您不需要特别声明 ports:
  • (为了简单起见,还可以考虑删除container_name:links: 和所有networks: 部分;您可以删除所有这些部分而不会干扰容器的正常操作。 )
  • 泰大卫。成功了

标签: java postgresql docker tomcat


【解决方案1】:

将您的连接设置更改为:

db.user=admin
db.password=123456
db.url=jdbc:postgresql://moneytransferdb:5432/moneytransfer

端口映射使容器端口对主机可用,但不被其他容器使用。对他们来说,只有集装箱港口很重要。

【讨论】:

    猜你喜欢
    • 2015-05-19
    • 1970-01-01
    • 2020-05-05
    • 2018-09-02
    • 2020-02-12
    • 2018-04-08
    • 1970-01-01
    • 2018-06-29
    相关资源
    最近更新 更多