Docker部署Java应用无法连接Docker内PostgreSQL问题求助
解决Docker容器内Java应用无法连接WSL2中PostgreSQL的问题
方法1:用WSL2的IP连接
- 打开WSL终端,执行以下命令获取当前WSL2的IP:
ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 - 把Java应用的数据库连接字符串里的
localhost替换成这个IP,比如:jdbc:postgresql://172.18.0.1:5432/your_database_name - 注意:WSL2默认IP会随重启变化,若要固定IP,可修改WSL的网络配置文件(按需操作)
方法2:使用Docker自定义网络(推荐)
- 先创建一个专属网络:
docker network create app-network - 启动PostgreSQL容器时加入该网络:
docker run -d --name postgres-db --network app-network -p 5432:5432 -e POSTGRES_PASSWORD=your_pwd postgres - 启动Java应用容器时也加入同一个网络:
docker run -d --name java-app --network app-network your-java-image-tag - 此时Java应用的连接地址直接用PostgreSQL容器名即可:
jdbc:postgresql://postgres-db:5432/your_database_name
Docker会自动在同一网络内解析容器名到对应IP,不用管具体数值
方法3:用Docker内置的宿主机地址
- 在Windows+WSL2环境下,Docker容器可以通过
host.docker.internal直接访问宿主机(WSL2的网络已被映射) - 直接修改连接字符串为:
jdbc:postgresql://host.docker.internal:5432/your_database_name
这个地址无需手动获取IP,重启后也能正常访问,适合快速测试
内容的提问来源于stack exchange,提问作者Ilkar
相关产品推荐
相关产品推荐

