我正在true
容器中运行一个非常基本的spring boot
应用,该容器具有alpine docker
上的内存H2
数据库。不幸的是,未设置AWS
,所以我无法访问webAllowOthers
控制台。
有什么方法可以访问数据库中的数据?
我可以进入容器,但是我不知道如何继续。
答案 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
因此要备份数据库:
wget http://localhost:8080/h2
。 HTML源代码将具有指向login.jsp?jsessionid=xxxxx
的链接。在curl命令中使用此会话ID。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 。