首页 文章

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

提问于
浏览
1

我有两个Docker容器 . 一个是基于标准的MariaDB图像 . 该容器名为“mariadb”,其中一个数据库名为“fi” . fi db里面有几个表,每个表有几行数据 . 使用DataGrip或任何其他数据库查看软件,我可以使用端口3306成功访问和查询此数据库在localhost上调用它 .

我的第二个Docker容器运行一个Spring Boot应用程序,该应用程序需要访问MariaDB中的数据 . 如果我在docker中运行MariaDB,并在主机上运行Spring Boot应用程序,我可以使用连接字符串成功访问docker中的MariaDB:“jdbc:mariadb:// localhost:3306 /?user = myUsername&password = myPassword ” . 我的问题是,当我尝试在单独的Docker中运行它们时,Spring Boot应用程序无法访问数据库 . 我发现很多人都说“链接”两个码头 Worker ,但这似乎并没有解决问题 . 当我运行Spring Boot docker时,我执行命令“docker run -i -p 8080:8080 --link mariadb:db javaImage / bin / bash” . 我正在发布8080端口,原因与此问题无关 . 根据我的理解,它们现在应该是我的Spring Boot docker中的一个环境变量,可以通过关键字“db”访问,它将被一个环境变量替换,该变量是MariaDB docker的实际ip .

截至目前,在我的Java代码中 Build 连接(或者很好的尝试)是使用连接字符串“jdbc:mariadb:// db:3306 / fi?user = myUsername&password = myPassword” . 这将返回错误“无法连接:未知数据库'fi'”,这很奇怪,因为如果此连接真正连接到MariaDB docker,则会找到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 --link mariadb javaImage / bin / bash”运行容器 . 同样的结果,在尝试 Build 连接时遇到此错误“无法连接:未知数据库'fi'” .

1 回答

  • 4

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

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

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

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

相关问题