在 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_DATABASEall 之后的 反斜杠 我一直在监督。

再次感谢您的帮助!

【讨论】:

以上是关于在 Openshift v3 中获取与 Spring Boot 应用程序的 mysql 连接的主要内容,如果未能解决你的问题,请参考以下文章

Openshift V3系列各组件版本

openshift 3.11 安装部署

与 OpenShift 上的 Java 程序的 RMI 或套接字连接

在 OpenShift 上安装 Tekton Triggers EventListener (for GitLab) 会导致:错误配置映射被禁止:无法在 API 中获取资源配置映射

Openshift与Kubernetes的区别

如何在 openshift 中使用 keycloak 和 spring 读取所有用户?