使用 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