База данных не хранится в 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")