我正在使用Spring Boot,Hibernate和MySql。在运行应用程序时,它按预期运行得很好。但是,在制作docker-compose文件并使用mysql docker image运行应用docker镜像时,会出现此错误。
错误 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败 java.net.ConnectException:连接被拒绝。
private Connection createConnection() throws SQLException
{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
String mysqlUrl = "jdbc:mysql://localhost/database?autoReconnect=true&useSSL=false";
Connection connection = DriverManager.getConnection(mysqlUrl, "root", "root");
return connection;
}
Application.properties
spring.datasource.url = jdbc:mysql:// localhost / database?autoReconnect = true&useSSL = false spring.datasource.username = root
spring.datasource.password = root
请指导我如何解决此问题。
**docker-compose.yml**
version: '3'
services:
docker-mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=database
- MYSQL_USER=root
- MYSQL_PASSWORD=root
ports:
- 3307:3306
app:
image: app:latest
ports:
- 8091:8091
depends_on:
- docker-mysql
答案 0 :(得分:1)
该问题归因于jdbc url中对本地主机的引用。
以下配置应该可以使用。
**docker-compose.yml**
version: '3'
services:
docker-mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=database
- MYSQL_USER=root
- MYSQL_PASSWORD=root
ports:
- 3307:3306
app:
image: app:latest
ports:
- 8091:8091
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://docker-mysql:3306/database?autoReconnect=true&useSSL=false
depends_on:
- docker-mysql
答案 1 :(得分:0)
您是否告诉码头工人它取决于SQL? 我的意思是有这样的东西:
depends_on:
- mysql_server
在您的docker-compose.yml中?
看起来像是配置问题。
答案 2 :(得分:0)
This Docker forum discussion帮助了我。对我来说,这是缓存问题,运行docker-compose down --rmi all