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

从Springboot应用程序连接到mysql容器

狄天逸
2023-03-14

喂,伙计们!

这是我的第一次,所以我会尽力做到最好。

我想创建一个应用程序,它是运行与Springboot框架,我想把它连接到一个docker容器嵌入MySQL(但Spring启动应用程序不是运行在docker)

所以我一直关注这个帖子

我已经做了我的docker-comact:

  db:
     image: mysql
  ports:
     - '3306:3306'
  environment:
     - MYSQL_ROOT_PASSWORD=secret
     - MYSQL_DATABASE=users
  volumes:
     - ../data:/var/lib/mysql

我用这个命令运行它:

docker-compose run --service-ports db

一切都很好,所以现在我在Spring靴上改变application.properties:

   ## Server Properties 
   server.port= 5000

   ## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
   spring.datasource.url= jdbc:mysql://127.0.0.1:3306/users?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
   spring.datasource.username= root
   spring.datasource.password= secret

   ## Hibernate Properties

   #The SQL dialect makes Hibernate generate better SQL for the chosen database

   spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
   spring.jpa.hibernate.ddl-auto = update

   ## Hibernate Logging
   logging.level.org.hibernate.SQL= DEBUG

   ## Jackson Properties
   spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS= false
   spring.jackson.time-zone= UTC

但当我运行我的应用程序时,我有以下错误:(:

原因:org.springframework.jdbc.CannotGetJdbcConnectionException:获取jdbc连接失败;嵌套异常为com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障

我在MacOS上。。。

我试着跟随callicoder的路线。。。

https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-html" target="_blank">react-app-part-1/

谢谢你的帮助:)

共有1个答案

邓正谊
2023-03-14

问题是db容器不是在本地主机上运行,而是在迷你Linux虚拟机中运行,因为您在MAC上。

因此,要连接到数据库,您需要使用运行容器的机器的IP地址。为此,请运行命令docker machine ip default。这将返回您将在连接url(而不是本地主机)中使用的IP地址:

spring.datasource.url= jdbc:mysql://<docker-machine-ip>:3306/users?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
 类似资料:
  • 另一个解决方案是启动一个mysql docker容器并指定它的名称来代替localhost...但是我不想启动mysql docker容器,因为我已经安装了mysql(并且需要卷配置来保持数据持久化) 提前道谢。

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

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

  • 我已经运行了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应用程序访问时,它会拒绝以下应用程序中的属性。proper

  • 我花了几个小时在谷歌上搜索,但似乎找不到正确的路径/文档来帮助我走上正确的道路:( 前提很简单。 我有一个在localhost:8080上打开的springboot应用程序。我有一个在localhost:15672上打开的rabbitmq服务器 当这两个应用程序都运行时,springboot应用程序将通过一些用户交互向Rabbitmq服务器发送消息。当我对这两个独立的服务进行dockerize(容

  • 免责声明:我知道人们通常不会这样做,我使用SQL数据库是出于成本原因,而且我对编程比较陌生。 我正在尝试从我的Android Studio应用程序向我的MariaDB数据库发送SQL脚本。我目前正在为MariaDB实现一个Java数据库连接(JDBC)驱动程序,但我不确定需要包括什么。 我去了JDBC MariaDB驱动程序的下载网站,但是有很多jar文件,我可以选择下载。你怎么知道你需要哪一个,