连接到 Docker 容器中的 H2 数据库

2023-12-06

我有一个基本的 Spring Boot Data JPA 项目。我要连接的 h2 数据库位于/tmp/customerdb.h2.db。当使用运行应用程序时mvn spring-boot:run一切正常。应用程序连接到数据库,添加记录,并将添加的记录打印到控制台。

然后我构建一个 docker 容器并运行它。 docker 文件如下所示:

FROM java:8
VOLUME /tmp
ADD jpa-docker-1.0.0.jar  app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar",/app.jar"]

当我运行容器时,出现以下错误:

2015-06-12 19:25:57.200  WARN 1 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 42102, SQLState: 42S02
2015-06-12 19:25:57.200 ERROR 1 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : Table "CUSTOMER" not found; SQL statement:

所以看起来应用程序无法看到数据库。连接 URL 如下所示:spring.datasource.url=jdbc:h2:/tmp/customerdb

正如我所提到的,在 Docker 容器外部运行时,这可以正常工作。我假设 Dockerfile 中的行VOLUME /tmp创造了/tmp容器内的目录及其包含的所有文件,以便数据库可见,但这似乎不起作用。想法?

TIA, - 奥莱


这就是解决方案。首先,我添加了数据库 docker build 目录,其中包含Dockerfile。然后我更新Dockerfile与以下行:

ADD customerdb.h2.db  /tmp/customerdb.h2.db

应用程序现在可以连接到容器内的数据库。请注意卷中包含的数据库/tmp/仅限于容器,与我复制到的数据库不同/tmp/我的工作站上的目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接到 Docker 容器中的 H2 数据库 的相关文章

随机推荐

  • XmlSerializer - 忽略继承的不可序列化成员

    假设您有两个类 一个继承另一个类 并且子类需要使用 XmlSerializer 进行序列化 反序列化 但是 父级包含不可序列化的成员 例如字典 public class Parent public Dictionary
  • 传递可变大小的表单

    我有一个大小 长度 可变的表单 它是从 MySQL 数据库填充的 有 4 个字段组成用于创建按钮的信息 id 按钮 名称和价格 提交表单后 我想将所有值保存到 MySQl 数据库 并使用成功消息更新页面底部的 div 对于我的所有其他页面
  • Coqide 8.5:Linux 上没有语法突出显示

    我安装了 Coqide 8 5 w nix 不幸的是 所有窗格中的文本都是黑色的 没有任何类型的语法突出显示 否则 8 5 似乎比我也安装的 8 4 有很大改进 我还得到以下信息 coqide 17272 GtkSourceView WAR
  • 从 tfs 变更集中获取文件列表

    我需要仅从 chageset 获取已更改文件的列表 并排除所有其他垃圾 我可以从命令 tf Changeset i changesetnumber 获取此信息 但除了文件列表之外 我还有很多其他信息 我不需要这些信息来实现我的目的 或者也许
  • 如何将 Best In Place 与 twitter bootstrap 结合使用

    我还没有看到任何文档 如果我有 我需要包括 data provide typeahead 并包含来源 assume City getcities to json返回包含城市名称的正确 json
  • Facebook javascript 连接本地主机域

    我正在尝试使用 javascript 创建 facebook 连接 但出现以下错误 应用程序配置不允许给定 URL 应用程序设置不允许一个或多个给定 URL 它必须与网站 URL 或画布 URL 匹配 或者该域必须是应用程序域之一的子域 是
  • 为什么我看不到添加到 DataGridView 的 DataGridViewRow?

    我正在尝试在 DataGridView 中显示行 这是代码 foreach Customers cust in custList string rowValues cust Name cust PhoneNo DataGridViewRow
  • 如果页面显示在 FRAME 中,Google Chrome 浏览器将不支持页面标题中的缓存策略

    不管我做什么
  • 如何使用 FakeItEasy 更新参数的属性

    我有一个界面 其中包含一个如下所示的成员 void ExecuteSqlCommand string procedureName SqlParameter parameters 我正在使用 FakeItEasy 创建一个模拟 以传递给我的一
  • 为什么vb.net不支持多重继承?

    我见过一些关于为什么 c 不实现多重继承的讨论 但很少有人讨论为什么 vb 不支持多重继承 我知道 c 和 vb 都被编译为中间语言 因此它们都需要共享类似的限制 VB 中缺乏多重继承似乎被认为是 dot net 中缺乏该功能的原因之一 有
  • 对于 Power Query 中列中每个值第一次出现的情况,返回 1,否则返回 0

    我有一个数据列表 当每个值第一次出现时 我想在不同的列中返回 1 我可以在 Excel 表中使用公式 COUNTIF A 2 A2 A2 1 0 执行此操作 但我不知道如何在 Power Query 中执行此操作 可以在这里看到一个例子 U
  • 使用 WCF 通过线路传输最少的数据量

    我的项目有一个 netTCP WCF 服务 这是它的 app config
  • 使用 SqlAlchemy 将数据保存到数据库中,对象不可下标

    我正在尝试将一些数据插入数据库 不幸的是它失败并且没有保存 我怀疑我的数据结构不正确 在尝试保存 print title link date 之前 数据会在 process item 中很好地打印 每个对象 1 个标题 链接和日期 但无法保
  • Netbeans 默认使用逗号。为什么?

    大家好 女孩们 那么 Netbeans 像大多数 IDE 一样 使用点 来组织小数位 对吧 我不知道为什么 但我的 IDE 开始使用逗号 来组织小数位 甚至控制台中显示的输出也使用逗号 我如何将其更改回默认设置并再次开始在小数位上使用点 P
  • Android post 文件和文本

    我目前有两种方法 一种是发布文件 另一种是发布一些文本 它们如下 发布数据 public void postData Create a new HttpClient and Post Header ArrayList
  • preg_match(); - 未知修饰符“+”[重复]

    这个问题在这里已经有答案了 好的 我目前正在解析 RSS 提要 我已经获得了我需要的数据 没有问题 剩下的就是解析游戏标题 这是我目前拥有的代码 忽略马虎 它只是一个概念证明
  • Xamarin.iOS:Visual Studio 2019 更新后无法运行

    我面临着一个奇怪的情况 更新 Visual Studio 2019 后 我无法在 iOS 中运行该应用程序 当我尝试从链接到 Mac 的 Windows 计算机运行时会发生这种情况 但是 当我使用 Visual Studio for Mac
  • 如何找到字符串上正则表达式匹配的百分比? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我参与了一项数字无线电传播研究 其中远程发射器在定义的时间发送预定义的信标 该信标很容易与正则表达式匹配 但由于太阳和大气条件的原因 它并不总是 100 解码 我想做的是计算解码的百分
  • 在 Symfony 数据库中导入 Excel 数据

    我正在开发一个项目 需要将 Excel 数据导入到我的 Symfony 数据库中 但问题是我不知道该怎么做 我尝试使用 ExcelBundle 该项目是 用户必须使用表单按钮发送他的 Excel 文件 我需要提取不带标题的数据来填充我的数据
  • 连接到 Docker 容器中的 H2 数据库

    我有一个基本的 Spring Boot Data JPA 项目 我要连接的 h2 数据库位于 tmp customerdb h2 db 当使用运行应用程序时mvn spring boot run一切正常 应用程序连接到数据库 添加记录 并将