postgres容器连接被拒绝

ca1c2owp  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(298)

docker由2个容器组成。第一个是postgres数据库,第二个是javaspring启动应用程序。为了运行,我进一步使用docker compose配置文件: docker-compose.yml ```
version: "3.7"

services:
db-service:
image: postgres
restart: always
volumes:
- /home/ec2-user/dbdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 1
POSTGRES_DB: auth
ports:
- 5432:5432

auth-service:
build: .
restart: always
depends_on:
- db-service
links:
- db-service
ports:
- 80:80

我想用 `/home/ec2-user/dbdata` 包含数据库数据,毕竟,数据是创建的。成功。postgres容器的日志为:
postgresql初始化进程完成;ready for start 2021-01-07 01:36:16.786 utc[1]日志:在x86泷64-pc-linux-gnu上启动postgresql 13.1(debian 13.1-1.pgdg100+1),由gcc(debian 8.3.0-6)8.3.0编译,64位2021-01-07 01:36:16.786 utc[1]日志:侦听ipv4地址“0.0.0.0”,端口5432 2021-01-07 01:36:16.786 utc[1]日志:侦听ipv6地址:“,端口5432 2021-01-07 01:36:16.790 utc[1]日志:侦听unix套接字“/var/run/postgresql/.s.pgsql.5432”2021-01-07 01:36:16.795 utc[76]日志:数据库系统在2021-01-07 01:36:16 utc 2021-01-07 01:36:16.800 utc[1]日志:数据库系统已准备好接受连接
但是java应用程序抛出了一个错误:
org.postgresql.util.psqlexception:到127.0.0.1:5432的连接被拒绝。检查主机名和端口是否正确,以及邮局主管是否接受tcp/ip连接。
但在端口Map中 `5432:5432` .
java应用程序中的数据源属性是:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/auth
spring.datasource.username=postgres
spring.datasource.password=1

这个错误的原因是什么?
u0njafvf

u0njafvf1#

它不起作用,因为java应用程序指向127.0.0.1,这是java容器的本地版本,并且postgres没有在该容器中运行。在属性文件中更改此行:

spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/auth

spring.datasource.url=jdbc:postgresql://db-service:5432/auth

使用 db-service 因为主机来自docker-compose.yml文件中的服务名称。有关更多信息,请参阅docker compose networking页面。

相关问题