在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