Docker/Hibernate/PostgreSQL - 将运行 Hibernate/SpringBoot 应用程序的容器与 postgreSQL 容器不工作连接

Posted

技术标签:

【中文标题】Docker/Hibernate/PostgreSQL - 将运行 Hibernate/SpringBoot 应用程序的容器与 postgreSQL 容器不工作连接【英文标题】:Docker/Hibernate/PostgreSQL - Connecting container running Hibernate/SpringBoot app with a postgreSQL container not working 【发布时间】:2018-08-27 07:32:56 【问题描述】:

我正在运行一个非常简单的 SpringBoot 应用程序,它使用 Hibernate 连接到 PostgreSQL 数据库。并运行两个 Docker 容器,一个带有带有 Tomcat 镜像的 .war,一个带有 postgresql 镜像。

这是 docker-compose 文件:

version: '3'

services:
  spring2:
    build:
      context: .
      dockerfile: DockerfileTomcat
    ports:
      - 8080:8080
    depends_on:
      - db
    networks:
      - datalink

  db:
    image: postgres
    ports:
      - 5432:5432
    env_file:
      - psql.env
    volumes:
      - database:/var/lib/postgresql/data
    networks:
      - datalink

networks:
  datalink:
    driver: bridge

volumes:
  database:

而这就是战争中的hibernate.cfg.xml:

<property name="dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>
  <property name="connection.driver_class">org.postgresql.Driver</property>
  <property name="connection.url">jdbc:postgresql://db:5432/myappdb</property>
  <property name="connection.username">admin</property>
  <property name="connection.password">pass1234</property>
  <property name="hibernate.hbm2ddl.auto">update</property>

  <mapping class="(...).models.Employee"/>

因此,当我在主机中使用 Eclipse 运行应用程序并连接到 docker 映像时,它可以工作,但是当我使用 Docker 运行它时,使用 docker compose 时,使用 DB 连接和 Hibernate 的端点返回 404。

最令人困惑的部分是没有错误出现。它只是说找不到端点。

谁能帮忙?

【问题讨论】:

什么是堆栈跟踪,您是否也检查过是否可以从 spring2 容器访问 db? 在 tomcat 容器中测试连接的最简单方法是什么?此外,它没有显示任何错误 有很多方法可以检查,使用docker exec -i -t spring2 /bin/sh 和一个简单的ping db 就足够了。 spring2 是容器的名称。 我试过 ping db 并且成功了 您应该提供错误的堆栈跟踪。 【参考方案1】:

我得到了它,这实际上是我在使用 Docker 时犯的一个错误。

我每次执行 docker-compose up 时都使用相同的图像,因此我实际运行的 .war 文件不是我尝试运行的版本。

我所做的只是docker-compose build,它确实有效。

【讨论】:

以上是关于Docker/Hibernate/PostgreSQL - 将运行 Hibernate/SpringBoot 应用程序的容器与 postgreSQL 容器不工作连接的主要内容,如果未能解决你的问题,请参考以下文章