Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql
Posted
技术标签:
【中文标题】Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql【英文标题】:Spring Boot Docker Container can't connect to postgresql hosted on Docker host 【发布时间】:2018-12-19 14:01:53 【问题描述】:当我使用 maven 构建我的 Spring Boot 应用程序时,应用程序需要在 application.properties 中连接到我的 postgresql 数据库。只有在我使用时才能连接
spring.datasource.url=jdbc:postgresql://localhost:5432/springbootdb
但是当我将构建的 jar 文件容器化时,我的应用程序无法连接到容器外部托管的 postgres 数据库。
这个问题的解决方法是什么?
我还是个初学者
【问题讨论】:
您使用的是 Windows 吗? 是的,我使用的是 Windows 10 【参考方案1】:来自 18.03 文档:
我想从容器连接到主机上的服务
主机有一个不断变化的 IP 地址(如果您没有网络,则没有 使用权)。从 18.03 起,我们的建议是连接到 特殊 DNS 名称 host.docker.internal,解析为内部 主机使用的 IP 地址。
网关也可以通过 gateway.docker.internal 访问。
示例:
spring.datasource.url=jdbc:postgresql://host.docker.internal:5432/springbootdb
【讨论】:
以上信息可在此处的网络文档中找到:docs.docker.com/docker-for-mac/networking【参考方案2】:您在哪里托管 PostgreSQL 数据库?
将localhost替换为实际机器IP地址(PostgreSQL数据库机器地址)
spring.datasource.url=jdbc:postgresql:<ip_address>:5432/springbootdb
【讨论】:
对我不起作用:java.net.UnknownHostException: postgresql 当我想用 maven 构建时 您的 PostgreSQL 数据库在哪里?在安装 docker 的同一台机器上?还是外面? (windows?) 以及 docker 应用程序在哪里 (windows/ubuntu?) 它在我的 Windows 本地主机上,但我认为容器有另一个环境。与 docker right 相同的机器 您的防火墙是否阻止传入/传出端口 5432?您能否在您的 Windows 防火墙上添加/允许进出 5432? 不幸的是它对我不起作用,谢谢您的建议以上是关于Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.0:Docker Compose + Spring Boot +
Spring Boot 2.0:使用 Docker 部署 Spring Boot
Spring Boot 2.0:使用 Docker 部署 Spring Boot
Spring Boot 2.0:Docker Compose + Spring Boot + Nginx + Mysql 实践