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

无法从spring boot应用程序连接MYSQL docker容器

融修平
2023-03-14

我已经运行了MYSQL容器,我能够执行它,并且能够使用“MYSQL-h 172.17.0.2-u root-p”从主机连接。我已经执行“docker run--name=mysql-host-e mysql_root_password=root-d mysql:5.7.32”来运行docker映像。

但是,当我试图通过spring boot应用程序访问时,它会拒绝以下应用程序中的属性。properties

spring.datasource.url=jdbc:mysql://172.17.0.2:3306/auditlog?createDatabaseIFNotExist=true&useJdbcCompliantTimeZoneShift=true&useLegacyDateTimeCode=false&serverTimeZone=utc&usessl=false
spring.datasource.username=root
spring.datasource.password=root

我正在按下面给出的操作我的罐子

Java-jar service-1.0.0.jar spring.config.location=file:///home/10662598/downloads/entity-search-service-deploymentfolder/entity-search-service/configs/application.properties

错误获取原因:java.net.ConnectException:连接被拒绝(连接被拒绝)

共有2个答案

狄玉书
2023-03-14

有点晚了,但我认为您需要将本地计算机上的端口3306转发到包含端口3306试试这个

docker运行--name=mysql-host-p 3306:3306-e mysql_root_password=root-d mysql:5.7.32

戎兴言
2023-03-14

您的问题可能是因为spring boot应用程序无法访问数据库(mysql),原因可能是它们不在同一个网络中。

从您的问题中,我看到您正在使用docker run...运行容器,因此当您使用该命令启动MySQL和spring boot应用程序时,它们不在同一个网络中。

解决方法是,首先创建一个网络,然后启动MySQL和spring应用程序在该网络中运行:

docker network create my-net

然后像往常一样启动容器,但记住要将容器添加到刚刚创建的网络中:

docker run ... --network my-net

现在您的容器在同一网络中并且应该互相到达,您可以通过exec到spring boot应用程序来验证这一点,并使用Mysql容器名称(和端口)尝试curl到Mysql容器:

curl <mysql_container_name>:3306

然后只需确保将Mysql端口映射到主机,并使用localhost: 进行连接

祝你好运:)

 类似资料:
  • 喂,伙计们! 这是我的第一次,所以我会尽力做到最好。 我想创建一个应用程序,它是运行与Springboot框架,我想把它连接到一个docker容器嵌入MySQL(但Spring启动应用程序不是运行在docker) 所以我一直关注这个帖子 我已经做了我的docker-comact: 我用这个命令运行它: 一切都很好,所以现在我在Spring靴上改变application.properties: 但当

  • 尝试使用主连接字符串和用户名(数据库名)连接到cosmosdb Mongo API 原因:com.mongodb.mongotieoutexception:在等待与com.mongodb.client.internal.mongoclientdelegate$1@3C291AAD匹配的服务器时,在30000 ms后超时。群集状态的客户端视图是{type=replica_set,servers=[{

  • 我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了

  • 示例代码: 客户端日志: 13/02/06 10:58:32信息zookeeper.clientcnxn:服务器192.168.113.27/192.168.113.27:2181上完成会话建立,sessionid=0x13CAE4BD91B0003,协商超时=40000

  • 我是Django的新手。我已经创建了一个名为,它在浏览器和邮递员应用程序中都能完美运行。 然而,当我试图从Android应用程序访问API时,它返回NULL。 当API如下所示时,android代码可以工作。 但是,当API为以下API时,它不起作用,即使以下API在同一台PC上运行的浏览器和Postman应用程序中运行良好。 我将代码附加到进行API调用的地方。 有人能帮我吗?提前感谢。

  • 我正在使用Spring引导应用程序连接MongoDB实例。我们已在MongoDB上启用了以下角色的身份验证 角色:[ { role: "dbOwner ",db: "{{ mongo.database_name }}" } 角色:[ { role: "readWrite ",db: "{{ mongo.database_name }}" } 我们使用conf文件提供凭证 数据: mongodb。u