【发布时间】: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。通常命令将接受单个组合参数,或作为拆分值。也许由于某种原因该命令没有。
标签: mysql spring-boot openshift