从另一个Docker访问一个Docker中的MariaDB

我有两个Docker容器。 一个是基于标准的MariaDB映像。 容器被命名为“mariadb”,其中一个数据库名为“fi”。 在这个文件里面有几个表格,每个表格都有几行数据。 使用DataGrip或任何其他数据库查看软件,我可以成功地访问和查询这个数据库使用端口3306在本地主机上调用它。

我的第二个Docker容器运行一个Spring Boot应用程序,它需要访问MariaDB中的数据。 如果我在Docker中运行MariaDB,并在主机上运行Spring Boot应用程序,我可以使用连接string成功访问docker中的MariaDB:“jdbc:mariadb:// localhost:3306 /?user = myUsername&password = myPassword ”。 我的问题是,当我尝试在不同的Docker中运行它们时,Spring Boot应用程序无法访问数据库。 我发现很多人说“连接”这两个docker工人,但这似乎并没有解决问题。 当我运行Spring Boot docker时,我执行命令“docker run -i -p 8080:8080 – 链接mariadb:db javaImage / bin / bash”。 由于与此问题无关的原因,我正在发布8080端口。 从我所了解的情况来看,他们现在应该是我的Spring Boot docker中的一个环境variables,可以用关键字“db”访问,这个环境variables将被MariaDB泊坞窗的实际ip所替代。

到目前为止,在我的Java代码中,使用连接string“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 ...;"); 

按照以下build议对连接string进行更改,如上所示。 现在使用命令“run -i -p 8080:8080 – 链接mariadb javaImage / bin / bash”运行容器。 同样的结果,当试图build立连接“Could not connect:Unknown database'fi'”时收到这个错误。

如果容器被命名为mariadb,则应该在url中使用它,而不是db。

 jdbc:mariadb://mariadb:3306/fi?user=myUsername&password=myPassword 

在你的链接也应该使用mariadb,

 docker run -i -p 8080:8080 --link mariadb javaImage /bin/bash