2015-08-25 90 views
1

我在学习Docker,并创建了一个运行MySQL服务器的容器。它工作正常,当我在本地运行Spring Boot应用程序(无需Docker)时,我可以使用Spring Boot应用程序中的MySQL。但是,当我尝试运行内的另一个泊坞容器春季启动应用程序,连接到MySQL失败,我得到错误:java.net.ConnectException: Connection refused在Docker容器内运行Spring Boot应用程序,无法连接MySQL

在我的春节,引导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 

任何想法可能是什么错误?

回答

7

当你想从你的Spring引导容器使用MySQL的容器一个好主意,将link之如:

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

假设MySQL的是你的MySQL容器然后你可以的名称请使用以下JDBC URL在您的配置:

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

如果你没有连接两个容器,我期望的数据源URL是 “的jdbc:mysql的:// <主机的IP其中两个容器运行>/mydb' 假设Spring引导容器和MySQL容器在同一主机上运行。 – despadina

0

来处理这种情况(这是我使用的)最好的方法是运行分离模式你的MySQL容器。很显然,你能说出你的容器,只要你喜欢:

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

您的容器将在分离模式下运行,现在你可以检查IP和其它的运行使用检查命令端口:

docker inspect docker_mysql 

你可以检查使用日志: -

docker logs my-MySQL 

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

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

您还可以连接到使用任何客户端的MySQL服务器。我一般采用的MySQL客户端

sudo mysql -uroot -pyour_password_here -h 172.17.0.2 -P 3306 
相关问题