H2 DB в док-контейнере - PullRequest
       9

H2 DB в док-контейнере

0 голосов
/ 26 февраля 2019

Я запускаю очень простое приложение spring boot в контейнере alpine docker с базой данных H2 в памяти на AWS.К сожалению, webAllowOthers не установлен, поэтому я не могу получить доступ к консоли H2.

Есть ли какой-нибудь способ доступа к данным в БД?

Я могу залезть в контейнер, но я не знаю, как продолжить.

1 Ответ

0 голосов
/ 26 февраля 2019

Хорошо, мне удалось решить эту проблему, на случай, если кому-то понадобится в будущем:

На консоли H2 есть инструмент для резервного копирования любой БД в файл .sql (доступный в меню ИНСТРУМЕНТЫ),но поскольку БД в памяти существует только в работающем процессе, к нему нельзя получить доступ с помощью H2 Shell, только через консоль, встроенную в приложение весенней загрузки.

Консоль H2 использует много JavaScript, поэтомув среде только для командной строки было почти невозможно использовать его с браузерами командной строки (казалось, что я использую VI впервые ...), но проверка работы локально работающей доступной консоли дала ответ:

Инструмент Script использует следующий формат аргумента запроса (измените его в соответствии с вашей конфигурацией):

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.
  • Отправьте необходимые данные в инструмент Script в формате URL в кодировке:
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 должен быть в указанном месте.

...