【发布时间】:2018-01-26 16:31:53
【问题描述】:
我在 EC2 实例 (EC2_IP) 中设置了一个 spring-boot docker 容器,并且我在另一个 VM 中托管了一个 MySQL。我验证了可以从托管 docker 容器的 EC2 实例访问 mysql 主机(MYSQL_IP)。
我在 docker run 期间使用 docker 环境变量传递 spring.datasource.url 参数。
Spring Boot 应用程序失败并显示错误消息拒绝用户 db_user@EC2_IP 访问。这是我无法理解和修复的部分。我不明白为什么它试图连接到 EC2_IP 而不是 db_user@MYSQL_IP。
我做了一个 docker 检查,我验证了 spring.datasoure.url 的环境变量传递正确,它是 db_user@MYSQL_IP:3306。
我花了几个小时试图解决这个问题,但没有运气。任何帮助表示赞赏。
为了根据cmets进行澄清,我已经正确配置了数据源。
在 docker inspect 内部,Args 的值:
-Dspring.datasource.url=jdbc:mysql://MYSQL_IP:3306/test
另外,我检查了我是否传递了一些无效的 IP(例如)一些随机文本,然后它会抛出一个错误,指出主机无效(这确认,它正在使用我传入的主机)。但是,如果我配置为外部 IP,它似乎会解析为主机 IP 地址 (EC2_IP)。
【问题讨论】:
-
你能进入你的 sprint-boot docker 容器并执行 telnet sqlhost 3306 吗?
-
spring.datasource.url看起来像什么,密码和用户被屏蔽了?
标签: spring docker spring-boot dockerfile amazon-ecs