Docker容器中的H2 DB

时间:2019-02-26 15:31:37

标签: spring-boot docker h2

我正在true容器中运行一个非常基本的spring boot应用,该容器具有alpine docker上的内存H2数据库。不幸的是,未设置AWS,所以我无法访问webAllowOthers控制台。

有什么方法可以访问数据库中的数据?

我可以进入容器,但是我不知道如何继续。

2 个答案:

答案 0 :(得分:0)

好吧,我设法解决了这个问题,以防将来有人需要它:

H2控制台有一个工具可将任何数据库备份到.sql文件(可在TOOLS菜单中访问),但是由于内存中的DB仅存在于正在运行的进程中,因此无法通过H2 Shell进行访问,只能通过嵌入在Spring Boot应用程序中的控制台。

H2控制台使用了大量的javascript,因此在仅命令行的环境中,几乎不可能在命令行浏览器中使用它(感觉就像是第一次使用VI ...),但是要检查如何本地运行的可访问控制台工作正常,给出了答案:

脚本工具使用以下请求参数格式(根据您的配置进行更改):

tool: Script
args: -url,jdbc:h2:mem:testdb,-user,sa,-script,~/backup.sql

因此要备份数据库:

  • sh放入容器
  • wget http://localhost:8080/h2。 HTML源代码将具有指向login.jsp?jsessionid=xxxxx的链接。在curl命令中使用此会话ID。
  • 将所需数据以URL编码格式发布到Script工具中:
curl -d "tool=Script&args=-url%2Cjdbc%3Ah2%3Amem%3Atestdb%2C-user%2Csa%2C-script%2C%7E%2backup.sql" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:8080/h2/tools.do?jsessionid=xxxx

如果您做对了所有事情,则备份SQL应该在给定的位置。

答案 1 :(得分:0)

此答案:

https://stackoverflow.com/a/49741935/4280315

...问题“ “无法查看h2数据库Web控制台以及如何更改默认h2端口” ,可能会有所帮助。

它与我在远程服务器上的spring-boot应用程序一起工作。不过,我未使用Docker