postgresql - docker compose 错误“连接到 localhost:5432 被拒绝。”
问题描述
当我运行我的 docker-compose 时,我遇到了这个错误: 错误消息
app | 2021-09-23 11:52:51.860 ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
app |
app | 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.
app | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:280) ~[postgresql-42.2.5.jar!/:42.2.5]
app | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar!/:42.2.5]
app | at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar!/:42.2.5]
我试图更改我的 application.properties 文件中的 url 并且错误是相同的。这是我的 application.properties 文件: application.properties
spring.datasource.url=jdbc:postgresql://postgres:5432/employees
spring.datasource.username=postgres
spring.datasource.password=root
spring.jpa.show-sql=true
server.port=8086
## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
` 这是我的 Dockerfile: Dockerfile
from openjdk:8
copy ./target/springboot2-postgresql-jpa-hibernate-crud-example-0.0.1-SNAPSHOT.jar employee-jdbc-0.0.1-SNAPSHOT.jar
CMD ["java","-jar","employee-jdbc-0.0.1-SNAPSHOT.jar"]
这是我的 docker-compose: docker-compose
version: "3"
services:
postgres:
image: postgres:latest
network_mode: bridge
container_name: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
expose:
- 5430
ports:
- 5430:5430
environment:
- POSTGRES_PASSWORD=root
- POSTGRES_USER=postgres
- POSTGRES_DB=employees
# APP*****************************************
app:
image: app
network_mode: bridge
container_name: app
expose:
- 8081
ports:
- 8081:8081
depends_on:
- postgres
links:
- postgres
environment:
- POSTGRES_PASSWORD=root
- POSTGRES_USER=postgres
- POSTGRES_DB=employees
- POSTGRES_URL=jdbc:postgresql://postgres:5432/employees
volumes:
postgres-data:
解决方案
你可以运行这个命令来检查
sudo lsof -n -u postgres |grep LISTEN or sudo netstat -ltnp | grep postgres
应该显示 PostgreSQL 正在监听的 TCP/IP 地址和端口
可能是 postgres 已经在运行,而您的图像没有使用 docker 运行。如果它已经在运行,那么终止该进程可能会对您有所帮助。
推荐阅读
- python - 打开目录中的所有文件以测试条件
- r - 如何使用基于成对欧几里得距离向量的核函数分配权重?
- java - 如何在 Java 中连接 1 个数组和字符串?
- java - 为什么我在此程序中收到 ArrayIndexOutOfBoundsException 错误?
- linux - Docker:从 Win10 挂载到运行 ubuntu 的容器的 dir 中不允许 git 操作
- javascript - 希望让我的机器人接收消息,并使用 Discord.js 转换字母
- python-3.x - selenium alert 使用 IE 驱动程序自动单击接受
- c - C语言程序以不同的颜色开始
- python - 如何在 Django admin 中更改对象的名称?
- python - 将 opencv bgr 列表理解为调色板的十六进制分箱。TypeError:无法解压不可迭代的 numpy.uint8 对象