繁体   English   中英

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

[英]Running Spring Boot app inside Docker container, unable to connect MySQL

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

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

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 容器的名称,那么您可以在配置中使用以下 JDBC URL:

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

处理这种情况(我使用过)的最佳方法是以分离模式运行 MySQL 容器。 显然,您可以随意命名容器:

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

您的容器将在分离模式下运行,现在您可以使用检查命令检查运行它的 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM