如何将在 Docker 中运行的 Spring Boot (JAR) 应用程序连接到我计算机上的 MySql 服务器? [我尝试了不同的帖子,但这没有帮助]
在我的 Spring Boot 'application.properties' 中,我有:
spring.datasource.url = jdbc:mysql://localhost:3306/geosoldatabase
我尝试了多种选择:
$ docker run -p 8080:8080 --name containername imagename
$ docker run --net="host" -p 8080:8080 --name containername imagename
$ docker run -p 8080:8080 --add-host=localhost:192.168.99.100 --name containername imagename
但可惜的是,我无法连接到 MySql 服务器。休眠失败。在我的 CAAS 提供商上,这一切都运行良好 - 当然使用已知的容器名称。
我的 Dockerfile 非常简单:
FROM fabric8/java-jboss-openjdk8-jdk
ENV JAVA_APP_JAR myapplication.jar
ENV AB_OFF true
EXPOSE 8080
ADD target/$JAVA_APP_JAR /deployments/
正如建议的,也可以使用环境变量。这是我到目前为止所做的:
- 在Windows10环境设置屏幕中定义,我定义了以下环境变量: [1] DATABASE_HOST=127.0.0.1:3306 和 [2] DATABASE_NAME=mydbname
- 我按照建议更改了 application.properties 文件:
spring.datasource.url = jdbc:mysql://${DATABASE_HOST}/${DATABASE_NAME}
在 Docker 快速启动屏幕中,输入“docker Push...”后,我收到相同的错误。这次的原因有所不同:
引起原因:java.net.UnknownHostException:${DATABASE_HOST}:名称或
服务未知。
为了检查环境变量是否设置正确,我输入:“echo ${DATABASE_HOST}”,然后得到值“127.0.0.1:3306”。
Update:建议将“docker-machine ip”地址放入database_host变量中。现在原因有点不同:
引起原因:org.hibernate.tool.schema.spi.SchemaManagementException:无法打开模式管理目标的 JDBC 连接