База данных не хранится в Docker-образе с глянцевым прокси

Я разработал решение и решил использовать блестящий прокси.

У меня есть следующая проблема:

Пользователь должен собирать данные о решении, которые должны храниться и обновляться в базе данных для всех пользователей, получающих доступ к решению. Я использовал SQLite и R для этого.

Теперь, когда я вхожу и собираю данные, они сохраняются, но когда я вхожу с другим пользователем, я не могу найти захваченные данные.

Проблема в том, что сохранение данных не похоже на сохранение в образе докера, почему это так и как я могу это исправить?

Для проблемного тестирования:

Ссылка на решение: https://xxasdfqexx.com/

Пользователь Data Capturer:

имя пользователя: ххххх

пароль: Fxxxx

Администратор:

имя пользователя: inxxx

пароль: prupxxxxx

Тестирование:

Внутри решения: если перейти на вкладку управления данными, ввести данные, а затем щелкнуть правой кнопкой мыши таблицу и вставить новую строку, щелкнуть "Сохранить изменения", он должен сохранить новые изменения в образе докера, но это только временно, другой Пользователь не может видеть сделанные изменения.

1 ответ

Решение

Это ожидаемое поведение. БД SQLite хранится в работающем контейнере, а не в образе. Поэтому он теряется, когда контейнер закрыт. И блестящий прокси запускает новый контейнер для каждого пользователя. Общее решение с помощью docker - использовать внешний том, который монтируется в работающий контейнер, и использовать этот файл / каталог для хранения постоянных данных. Вместе с блестящей прокси, вы должны использовать docker-volumes, см. https://www.shinyproxy.io/configuration/.

Собрав это вместе, вы можете использовать в конфигурации блестящего прокси что-то вроде:

apps:
  - name: ...
    docker-cmd: ...
    docker-image: ...
    docker-volumes: /some/local/path/:/mnt/persistent

А в блестящем приложении что-то вроде:

dbConnect(RSQLite::SQLite(), "/mnt/persistent/my-db.sqlite")
Другие вопросы по тегам