java - 从计算引擎中的 docker 容器连接到 Cloud SQL

标签 java spring-boot docker google-cloud-platform google-cloud-sql

我正在尝试在计算引擎上的 docker 容器内部署一个 spring boot 应用程序,并将其连接到 google cloud sql 数据库。我已将计算引擎上的 IP 地址从动态更改为静态,并将云 sql View 中的 IP 地址列入白名单,但我仍然无法连接。 我假设容器有自己的 IP 地址

有什么建议吗?

这是我遇到的异常:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:91) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.NativeSession.connect(NativeSession.java:144) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:956) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        ... 56 common frames omitted
Caused by: java.net.ConnectException: Connection refused
        at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:579) ~[na:na]
        at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na]
        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na]
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:339) ~[na:na]
        at java.base/java.net.Socket.connect(Socket.java:603) ~[na:na]
        at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:155) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:65) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
        ... 59 common frames omitted

最佳答案

我发现了关于 Connecting MySQL client using the Cloud SQL Proxy docker image 的内容.MySQL和Postgresql都有,

有一些步骤需要确认:

*验证实例上启用的范围 *验证您使用的是正确的实例名称:

For example: myproject:us-central1:myinstance.

如果您正在使用其他文档,请分享。

关于java - 从计算引擎中的 docker 容器连接到 Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60751579/

相关文章:

java - 读取输出流的内容

带有可分页的 Spring 自定义查询

javascript - 从 Spring Rest api 下载文件

java - "to com.zaxxer.hikari.HikariDataSource:"Springboot下绑定(bind)属性失败

django - Docker 不保留 postgres 卷 [django]

java - 其余高级客户端 : Request timeout is not working

c# - 在 C# 中扩展抽象类

Java反射: create new instance of interface give java. lang.ClassCastException

elasticsearch - 如何使用fluentD解析多行docker日志?

apache-spark - 来自Docker的Ne​​o4j和Spark的ServiceUnavailableException