在Docker容器中运行Spring Boot应用程序,无法连接MySQL

我试图学习Docker,并创build了一个运行MySQL服务器的容器。 它工作正常,当我在本地运行Spring Boot应用程序(无需Docker)时,我可以使用Spring Boot应用程序中的MySQL。 但是当我尝试在另一个Docker容器中运行Spring Boot应用程序时,与MySQL的连接失败,出现错误: java.net.ConnectException: Connection refused

在我的Spring Boot的application.properties我有这样的configuration:

 spring.datasource.url: jdbc:mysql://127.0.0.1/mydb spring.datasource.username=root spring.datasource.password= spring.datasource.driverClassName=com.mysql.jdbc.Driver 

任何想法可能是错的?

当你想从你的Spring Boot容器中使用MySQL容器时,一个好主意就是链接到它:

 docker run ... --name spring-boot --link mysql ... 

假设mysql是你的MySQL容器的名字,那么你可以在你的configuration中使用下面的JDBC URL:

 spring.datasource.url: jdbc:mysql://mysql/mydb 

处理这种情况(我使用的)的最佳方法是以分离模式运行你的MySQL容器。 显然,你可以根据自己的喜好命名你的容器:

 docker run --detach --name = my-MySQL --env = "MYSQL_ROOT_PASSWORD=your_password_here" mysql 

您的容器将以独立模式运行,现在您可以使用inspect命令检查IP和其运行的端口:

 docker inspect docker_mysql 

您可以使用以下方式检查日志: –

 docker logs my-MySQL 

你可以使用检查后得到的IP。 我的MySQL在172.17.0.2和3306端口上运行默认的一个:

 spring.datasource.url=jdbc:mysql://172.17.0.2:3306/mydb 

您也可以使用任何客户端连接到MySQL服务器。 我一般使用mysql-client

 sudo mysql -uroot -pyour_password_here -h 172.17.0.2 -P 3306