我有一个计划在Spring Boot
容器上运行的Docker
应用程序,并且为了测试该应用程序,我正在连接到主机上的MySQL
。为此,我在application.properties
中拥有一个属性,如下所示:
spring.datasource.url = jdbc:mysql://host.docker.internal:3306/flexapp
现在,当我执行./mvnw install dockerfile:build
时,它尝试先构建应用程序,然后再构建Docker image
。构建过程中会显示
Caused by: java.net.UnknownHostException: host.docker.internal: nodename nor servname provided, or not known
很显然,它无法解析host.docker.internal
。
如何将Spring Boot
容器中的Docker
应用程序连接到主机中的MySql
实例?我用谷歌搜索并尝试了很多解决方案,但似乎没有任何效果。
答案 0 :(得分:2)
问题在于,有一些正在执行的试图连接数据库的测试。这些测试将因无法解决host.docker.internal
而失败。
标准解决方案是使用Spring Boot提供的一种方法来外部化配置:Externalized Configuration。
特别地,一种方法是设置spring.datasource.url
指向application.properties中的localhost,并通过
--spring.datasource.url= jdbc:mysql://host.docker.internal:3306/flexapp
到Dockerfile中的Entrypoint或CMD指令。