我现在正在尝试一些新事物,我想创建一个小型 Spring/mySQL 应用程序。我已经设置了一个 docker-compose 文件,如下所示:
version: '3.3'
services:
docker-mysql:
container_name: docker-mysql
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- db_data:/var/lib/mysql
- ./initalize.sql:/docker-entrypoint-initdb.d/initalize.sql:ro
ports:
- 3306:3306
expose:
- 3306
volumes:
db_data: {}
在 initalize.sql 中,我设置了一个基本 TEST 数据库,其中包含一些测试表并填充其中一些,它工作正常,我可以通过命令行查询元素。
另一方面,我无法通过 Spring 连接到它,我有以下 application.properties 文件:
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.datasource.url=jdbc:mysql://localhost:3306/TEST?useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
每次我尝试启动该应用程序时,它都会收到(我没有在 docker 映像中运行该应用程序,它在 Windows 上运行) com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure 错误,并且它不能找到服务器。
我还尝试连接以将数据源 url 更改为 jdbc:mysql://docker-mysql:3306/TEST?useSSL=false 但它也不起作用。
如果你想要这个作品:
我还尝试连接以将数据源 url 更改为 jdbc:mysql://docker-mysql:3306/TEST?useSSL=false 但它也不起作用。
您的 Spring Boot 应用程序应作为 docker 容器在与 MySQL docker 容器相同的虚拟网络上运行,或者两个容器都应在 docker 提供的默认桥接网络上运行。