当前位置: 首页 > 知识库问答 >
问题:

带有 Spring boot 的 Docker 映像无法连接到 CloudSQL

籍光熙
2023-03-14

我想使用Spring Boot创建Web服务,将其添加到docker映像,连接到云sql,然后在Compute Engine上运行。

我正在使用docker compose来组合项目映像和云sql代理映像。但是,无论我给出什么jdbc URL,它都无法连接。现在,我正在本地尝试所有这些

我尝试了以下URL:

1. spring.datasource.url=jdbc:mysql:///cloudsql/myinstancename/${MYSQL_DATABASE}
2. spring.datasource.url=jdbc:mysql://cloudsql/myinstancename/${MYSQL_DATABASE}
3. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/${MYSQL_DATABASE}

docker-compose.yml

version: '3'

services:
  app:
    image: appname

    volumes:
      - cloudsql:/cloudsql
    depends_on:
      - sql_proxy
    ports:
      - 8080:8080

# SQL proxy is built correctly, says
# Listening on /cloudsql/myinstancename for myinstancename
# sql_proxy_1  |  Ready for new connections

  sql_proxy:
    environment:
      - MYSQL_ROOT_PASSWORD=password!#
      - MYSQL_DATABASE=appname
      - MYSQL_USER=root
    image: gcr.io/cloudsql-docker/gce-proxy:1.12
    command:
      /cloud_sql_proxy
      -dir=/cloudsql
      -instances=myinstancename  # (I have added this correctly)
      -credential_file=/root/keys/keyfile.json
    volumes:
      - E:\mykey.json:/root/keys/keyfile.json:ro
      - cloudsql:/cloudsql
    ports:
      - 3306:3306


volumes:
  # This empty property initializes a named volume.
  cloudsql:

应用程序.属性:

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql:///cloudsql/myinstancename/${MYSQL_DATABASE}
spring.datasource.username=${MYSQL_USER}
spring.datasource.password=${MYSQL_ROOT_PASSWORD}
spring.security.enabled=false
security.ignored=/**

共有1个答案

王波
2023-03-14

目前,您使用的云SQL代理是在/cloud dsql/中安装unix套接字的sidecar模式

或者,您可以使用云SQL JDBC套接字工厂。这是一个Java库,允许您创建到云SQL实例的认证连接,但不需要使用代理。

 类似资料:
  • 错误: 正在启动客户端连接,connectstring=localhost:2181 sessiontimeout=60000 watcher=org.apache.curator.connectionstate@7bf272d3[info]o.a.z.clientcnxn-打开到服务器localhost/127.0.0.1:2181的套接字连接。将不尝试使用SASL(未知错误)[info]K.M

  • 我正在运行从docker hub mongo image中提取的mongo docker image 它工作正常,但当我启动Robomongo时,我无法连接到localhost。出现以下错误消息: 无法连接到本地主机27017上的MongoDB。 错误:无法访问网络 谢谢你的帮助,谢谢。 编辑:我使用以下命令解决了问题:

  • 我创建了一个docker compose文件,将MySql连接到SpringBoot应用程序。但我得到了这个错误: 我尝试在本地机器中使用docker默认ip运行Spring Boot应用程序,同时在这个docker-compose.yml文件中只运行MySql容器,结果运行得非常好。但当我尝试docker编写文件时。我知道这个错误。

  • null 我是这么说的: 编辑:这不是因为gradle docker图像,而是任何图像。如果我使用Jenkins运行,并且它是一个容器,这也不起作用。尝试连接到172.x.x.1(主机地址)和公开的端口,但测试没有连接,但访问容器,并使用mysql客户机尝试相同的连接,我可以连接。

  • 您似乎试图通过本机驱动程序端口上的HTTP访问MongoDB。 而且日志显示我的mongodb是健康的。我想是我试图通过浏览器访问的最后一行。 2017-01-25T21:11:13.509+0000 I JOURNAL[initandlisten]JOURNAL dir=/data/db/Journal2017-01-25T21:11:13.509+0000 I JOURNAL[initandl

  • 我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库: