我有兩個Docker容器。一種是基於標準的MariaDB映像。該容器被命名爲「mariadb」,其中的一個數據庫名爲「fi」。 fi db裏面有幾個表格,每個表格都有幾行數據。使用DataGrip或任何其他數據庫查看軟件,我可以成功訪問和查詢這個數據庫使用端口3306在本地主機上調用它。從另一個Docker訪問一個Docker中的MariaDB
我的第二個Docker容器運行一個Spring Boot應用程序,它需要訪問MariaDB中的數據。如果我在Docker中運行MariaDB,並在主機上運行Spring Boot應用程序,我可以使用連接字符串成功訪問docker中的MariaDB:「jdbc:mariadb:// localhost:3306 /?user = myUsername & password = MYPASSWORD」。我的問題是,當我嘗試在不同的Docker中運行它們時,Spring Boot應用程序無法訪問數據庫。我發現很多人說「連接」兩個碼頭工人,但這似乎並沒有解決問題。當我運行Spring Boot docker時,我執行命令「docker run -i -p 8080:8080 - 鏈接mariadb:db javaImage/bin/bash」。由於與此問題無關的原因,我正在發佈8080端口。從我所瞭解的情況來看,他們現在應該是我的Spring Boot docker中的一個環境變量,可以使用關鍵詞「db」訪問,它將被一個環境變量替換,該環境變量是MariaDB docker的實際IP。到目前爲止,在我的Java代碼中,使連接(或很好地嘗試)使用連接字符串「jdbc:mariadb:// db:3306/fi?user = myUsername & password = myPassword」。這將返回錯誤「無法連接:未知數據庫'fi'」,這很奇怪,因爲如果此連接真正連接到MariaDB泊塢窗,那麼將會找到fi數據庫。
任何幫助表示讚賞。 謝謝!
編輯:代碼段
Connection connection = DriverManager.getConnection("jdbc:mariadb://mariadb:3306/fi?user=myUsername&password=myPassword");
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ...;");
製造如下建議的改變到連接字符串,如上所示。現在使用命令「run -i -p 8080:8080 - 鏈接mariadb javaImage/bin/bash」運行容器。相同的結果是,在嘗試建立連接時出現此錯誤「無法連接:未知數據庫'fi'」。
在此同時,我建議按照準則格式化您的問題,特別是引述代碼片段。 – techtabu