使用 docker 容器时 jdbc 连接字符串是啥?

Posted

技术标签:

【中文标题】使用 docker 容器时 jdbc 连接字符串是啥?【英文标题】:what is the jdbc connection string when using a docker container?使用 docker 容器时 jdbc 连接字符串是什么? 【发布时间】:2021-06-22 18:36:33 【问题描述】:

我正在运行一个 mysql docker 容器,使用:

docker run -p33060:33060 --name some-mysql2 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

它工作正常,我可以使用docker exec -it 055054ef4e56 bash 访问该容器并添加数据库...等

这是容器:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                NAMES
ea1693f5cdc8   mysql:latest   "docker-entrypoint.s…"   18 minutes ago   Up 18 minutes   3306/tcp, 0.0.0.0:33060->33060/tcp   some-mysql2

我想从spring boot连接到那个mysql服务器,所以我想知道连接字符串

我试过了:

spring.datasource.url=jdbc:mysql://some-mysql2:33060/MyDB

spring.datasource.url=jdbc:mysql://localhost:33060/MyDB

但是没有用,我得到了used by: java.net.UnknownHostException: some-mysql2,如果我使用 localhost,那么我得到了

n支持的协议版本:11。可能连接到 X 协议端口。

如果是 docker 容器,正确的连接字符串是什么?

【问题讨论】:

“没用”不是问题描述。 @user207421 我添加了我遇到的错误 【参考方案1】:

您的代码几乎没问题:

spring.datasource.url=jdbc:mysql://some-mysql2:33060/MyDB

但是Mysql的默认端口是3306,所以我认为你必须像这样运行你的容器:

docker run -p 33060:3306 --name some-mysql2 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

请看一下这个example

【讨论】:

我被使用:java.net.UnknownHostException: some-mysql2 如果我将其更改为 localhost,我会得到支持的协议版本:11。可能连接到 X 协议端口。 尝试进入容器使用:docker exec -it some-mysql2 bash 比尝试登录mysql:mysql -u root -p i>(提供您的 root 密码)。 @Marco Dinatsoli:你的问题解决了吗?谢谢你接受我的回答,你真好, 是的,我解决了,我将主机更改为 localhost,正如您所说,端口是 3306

以上是关于使用 docker 容器时 jdbc 连接字符串是啥?的主要内容,如果未能解决你的问题,请参考以下文章

需要分布式模式的 jdbc Kafka 连接配置设置作为 docker 容器的参考文档或代码

Spring boot JDBC无法连接到docker容器中的mysql

在Ubuntu20.04安装StarRocks On Docker并在DataGrip配置JDBC协议连接容器内StarRocks2.3.2

在Ubuntu20.04安装StarRocks On Docker并在DataGrip配置JDBC协议连接容器内StarRocks2.3.2

在Ubuntu20.04安装StarRocks On Docker并在DataGrip配置JDBC协议连接容器内StarRocks2.3.2

在Ubuntu20.04安装Kylin4 On Docker并在DataGrip配置JDBC协议连接容器内Hive1.2.1及Kylin4.0.0