无法从 wsl 2 上的服务 运行 之一连接到 wsl 2 上容器中的 postgres DB 运行

Unable to connect to postgres DB running in container on wsl 2 from one of the service running on wsl 2

我无法从 wsl 2 上的 运行ning 服务之一连接到 wsl 2 上容器中的 postgres DB 运行ning。

我可以从 wsl 2 上的另一个服务 运行ning 连接到这个数据库,我也可以从 windows 上的 pgAdmin 运行ning 和另一个服务连接到这个数据库运行宁 windows。

2022-02-25 20:25:52.975  INFO 2829 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-02-25 20:25:53.207  INFO 2829 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.

但是当我尝试从 wsl 2 上的另一个服务 运行ning 连接到这个数据库时,我得到

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.

我尝试使用 WSL IP,系统的 ipv4 代替本地主机没有任何帮助。两种服务之间的区别首先是 uber jar,其次我正在尝试 运行 使用 docker-compose.

如果您尝试从本地主机访问数据库,则需要发布数据库的端口。

如果您尝试从另一个容器连接,您需要将两个容器加入同一 docker 网络并使用数据库容器的名称作为主机名而不是本地主机。或者它的别名之一。在组合的情况下,容器通常已经在同一个网络上,并且您可以使用组合服务名称作为主机名,因为该服务的所有副本都以服务名称的别名添加到网络中。