Windows本地Spring Boot应用无法被Docker容器访问的解决方案咨询
Windows下Docker容器访问本地Spring Boot应用的解决建议
1. 确保本地Spring Boot应用监听正确地址
本地应用不能仅绑定127.0.0.1,否则只有本地主机能访问,容器无法连接。修改Spring Boot配置,让应用监听所有网卡:
- 在
application.properties或application.yml中设置:server.address=0.0.0.0 server.port=25011 - 或者启动时添加参数:
java -jar your-app.jar --server.address=0.0.0.0 --server.port=25011
2. 替换固定IP为Docker官方主机别名
Windows环境下(无论Docker用WSL2还是Hyper-V后端),Docker内置了稳定的宿主机别名host.docker.internal,会自动映射到本地主机,比你当前用的172.17.0.1更可靠(WSL2虚拟网卡IP可能随重启变化)。
修改docker-compose.yml中app1的环境变量:
LOCALLY_RUNNING_APP_BASE_URL: "http://host.docker.internal:25011"
3. 配置Windows防火墙允许端口入站
Windows防火墙默认会拦截外部(包括Docker容器)对本地端口的访问,需添加入站规则:
- 打开「Windows Defender 防火墙」→「高级设置」→「入站规则」→「新建规则」
- 选择「端口」→ 勾选「TCP」,输入端口
25011 - 选择「允许连接」→ 应用到所有网络类型(按需调整)
- 命名规则并完成配置
4. 容器内验证连通性(排查问题用)
若调整后仍无法访问,进入容器测试:
- 执行命令进入app1容器:
docker exec -it <app1容器ID/名称> /bin/bash - 用curl测试地址:
curl http://host.docker.internal:25011 - 如果curl失败,先ping
host.docker.internal确认能否解析到宿主机IP,再检查本地应用是否正常启动、端口是否监听。
5. 确认容器网络配置
你的容器已加入自定义网络network_abc,host.docker.internal在Docker任何自定义网络中都能正常解析和访问,无需额外修改网络配置。
内容的提问来源于stack exchange,提问作者Dilrukshi Perera
相关产品推荐
相关产品推荐

