docker - Docker 容器中的 Spring Boot 应用程序和主机中的 MySQL

标签 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 之前构建应用程序.它在 build 时说
Caused by: java.net.UnknownHostException: host.docker.internal: nodename nor servname provided, or not known
显然无法解决host.docker.internal .

如何连接我的 Spring Boot申请 Docker容器到 MySql我的主机中的实例?我用谷歌搜索并尝试了很多解决方案,但似乎没有任何效果。

最佳答案

问题是正在执行的一些测试试图连接到数据库。由于无法解析 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 指令。

关于docker - Docker 容器中的 Spring Boot 应用程序和主机中的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52017473/

相关文章:

java - 从另一个 @Transactional 注解方法调用 @Transactional 注解方法

linux - 在Dockerfile中使用sudo(Alpine)

docker - sudo docker build -t =“nisevi/static_web”无法正常工作

django - 如何修复此错误 django.db.utils.OperationalError : could not translate host name "db" to address . Docker

python - 来自 python 的 Docker

docker - 使用 docker compose 将 spark 连接到 localstack s3

java - Java 9 需要 Spring 5 吗?

spring-boot - Spring Cloud 流 'bindingService'错误

linux - docker run 中的 Dockerfile 入口点脚本参数

docker - 带有docker的Elasticsearch应用程序可在多节点集群上运行