我在尝试使用Docker Compose与PostgreSQL容器沿着运行Sping Boot 应用程序时遇到了一个问题。Sping Boot 应用程序无法连接到PostgreSQL容器,并且我一直收到以下错误:
org.postgresql.util.PSQLException:连接到postgresql:5432被拒绝。请检查主机名和端口是否正确,以及邮局主管是否接受TCP/IP连接。
我使用两个独立的Docker Compose文件,一个用于Sping Boot 应用程序,另一个用于PostgreSQL容器,并且我在同一个网络中声明了容器。
在Sping Boot 应用程序属性中,我在PostgreSQL URL中使用了正确的PostgreSQL容器名称:
- application.properties文件
spring.jpa.hibernate.ddl-auto=update spring.更新.url=jdbc:postgresql://postgresql:5432/mydb spring.更新.username=admin spring.更新.password=admin
- 数据库docker-compose文件
版本:“% 2”服务:
网络:mynetwork:驱动程序:网桥
数据库容器
database:
image: postgis/postgis
container_name: postgresql
networks:
- mynetwork
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_DB=mydb
ports:
- "5432:5432"
volumes:
- "./datadb:/var/lib/postgresql/data"
字符串
- Spring docker-compose文件
version:'2' services:backend:build:. container_name:spring-application ports:- 8085:8085 networks:- mynetwork environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/mydb
- SPRING_DATASOURCE_USERNAME=admin
- SPRING_DATASOURCE_PASSWORD=admin
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
depends on:
- database
型
网络:mynetwork:驱动程序:网桥
我还在pg_hba.conf文件中添加了这一行,并重新设置了postgresql容器:
host all all 0.0.0.0/0 trust
型
尽管有这些配置,连接还是被拒绝,Sping Boot 应用程序无法启动。
我错过了什么?任何想法,请
解决这个问题的可能方法,请?
1条答案
按热度按时间z2acfund1#
通常这种员工(数据库+后端应用程序)一起放在同一个
docker-compose
文件中,因为back-end
依赖于database
,更灵活,更容易维护。另外docker-compose默认设置一个网络,更多的细节你可以找到Networking-Compose。正如我在问题的评论中建议的那样,你应该只有一个单一的docker-compose
文件,一切都会很好地工作。作为一个例子的
docker-compose
文件,你可以在你的情况下使用:字符串