Docker容器中的Spring Boot应用程序以及主机中的MySQL

时间:2018-08-25 12:48:21

标签: docker spring-boot dockerfile

我有一个计划在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实例?我用谷歌搜索并尝试了很多解决方案,但似乎没有任何效果。

1 个答案:

答案 0 :(得分:2)

问题在于,有一些正在执行的试图连接数据库的测试。这些测试将因无法解决host.docker.internal而失败。

标准解决方案是使用Spring Boot提供的一种方法来外部化配置:Externalized Configuration

特别地,一种方法是设置spring.datasource.url指向application.properties中的localhost,并通过

在Dockerfile中覆盖它。
--spring.datasource.url= jdbc:mysql://host.docker.internal:3306/flexapp

到Dockerfile中的Entrypoint或CMD指令。