在 Openshift v3 中获取与 Spring Boot 应用程序的 mysql 连接
Posted
技术标签:
【中文标题】在 Openshift v3 中获取与 Spring Boot 应用程序的 mysql 连接【英文标题】:Get mysql connected with SpringBoot application in Openshift v3 【发布时间】:2018-06-09 22:59:00 【问题描述】:我无法将我的 SpringBoot 应用程序与 Openshift v3 中的 mysql POD 链接。
到目前为止我做了什么:
在 openshift v3 中启动并运行了一个基本的 Spring Boot 应用程序。 添加了 mysql 应用程序。 pod 已启动并正常运行。在我的 Spring Boot 应用的 application.properties 中添加了数据源配置:
spring.datasource.url=jdbc:mysql://mysql:3306/$MYSQL_DATABASE\ spring.datasource.username=$MYSQL_USER spring.datasource.password=$MYSQL_PASSWORD
通过执行以下命令将 spring boot 应用程序与 mysql db 链接:
oc env dc shoppinglist -e MYSQL_USER=dbuser -e MYSQL_PASSWORD=dbpassword -e MYSQL_DATABASE=shoppingdb
deploymentconfig“购物清单”已更新
但是,spring boot pod 正在崩溃,因为它无法使用给定用户访问 mysql db:
2017-12-29 13:35:00.806 ERROR 1 --- [ main]
o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial
connections of pool. java.sql.SQLException: **Access denied for user
''@'172.17.0.7'** (using password: YES)
不知何故,用户名丢失了。我猜我的 oc env 设置有问题?我没有胶水……
到目前为止,我不知道出了什么问题,并感谢任何帮助。谢谢!
【问题讨论】:
添加env变量后,是否重新部署pod?因为 env 变量不会立即设置,所以只有在全新部署后才会选择新配置。 在部署配置上设置环境变量在正常情况下会触发自动重启。问题是application.properties
中的环境变量引用是否被扩展。无论如何,运行 oc debug dc shoppinglist
并在 shell 提示符下运行 env
以验证环境变量是否已作为第一步传递到容器中。
我重新部署了,但结果没有改变。
@Graham Dumpleton:我也试过oc debug dc shoppinglist
。回复是:Error from server (NotFound): pods "dc" not found
我想知道为什么这不起作用,因为当我执行 oc get all 时,它除了其他人之外还返回dc/shoppinglist
所以语法是正确的,不是吗?
试试oc debug dc/shoppinglist
。通常命令将接受单个组合参数,或作为拆分值。也许由于某种原因该命令没有。
【参考方案1】:
新年快乐!感谢大家支持我找到我的问题的解决方案。 我学到了很多,但最后这只是我的 application.properties 中的一个错字:
spring.datasource.url=jdbc:mysql://mysql:3306/$MYSQL_DATABASE\
这可能是一个复制和粘贴问题(令人尴尬..)
MYSQL_DATABASE
all 之后的 反斜杠 我一直在监督。
再次感谢您的帮助!
【讨论】:
以上是关于在 Openshift v3 中获取与 Spring Boot 应用程序的 mysql 连接的主要内容,如果未能解决你的问题,请参考以下文章
与 OpenShift 上的 Java 程序的 RMI 或套接字连接
在 OpenShift 上安装 Tekton Triggers EventListener (for GitLab) 会导致:错误配置映射被禁止:无法在 API 中获取资源配置映射