2015-08-25 91 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 
相關問題