数据库未存储在带有 shinyproxy 的 docker-image 上
database not stored on docker-image with shinyproxy
我已经制定了解决方案并决定使用 shinyproxy。
我有以下问题:
用户需要捕获有关解决方案的数据,这些数据必须存储在数据库中并供访问该解决方案的所有用户更新,为此我使用了 SQLite 和 R。
现在,当我登录并捕获数据时,它会保存,但是当我以不同的用户登录时,我找不到捕获的数据。
问题是 docker 图像上似乎没有保存数据,这是为什么,我该如何补救它?
为了问题测试目的:
解决方案link:https://xxasdfqexx.com
数据采集器用户:
用户名:xxxxx
密码:Fxxxx
管理员用户:
用户名:inxxx
密码:prupxxxxx
测试:
在解决方案中,如果您转到数据管理选项卡,输入数据,然后右键单击 table 并插入一个新行,单击保存更改,它必须安全地对 docker 图片但它只是暂时这样做,其他用户看不到所做的更改。
这是预期的行为。 SQLite 数据库存储在 运行 容器 中,而不是图像。因此,当容器关闭时它会丢失。 shinyproxy 为每个用户启动一个新容器。 docker 的一般解决方案是使用安装到 运行 容器中的 external volume,并使用 file/directory 存储持久数据。与shinyproxy一起,你必须使用docker-volumes
,c.f。
https://www.shinyproxy.io/configuration/#apps.
将这些放在一起,您可以在 shinyproxy 配置中使用如下内容:
apps:
- name: ...
docker-cmd: ...
docker-image: ...
docker-volumes: /some/local/path/:/mnt/persistent
在 shiny 应用程序中是这样的:
dbConnect(RSQLite::SQLite(), "/mnt/persistent/my-db.sqlite")
我已经制定了解决方案并决定使用 shinyproxy。
我有以下问题:
用户需要捕获有关解决方案的数据,这些数据必须存储在数据库中并供访问该解决方案的所有用户更新,为此我使用了 SQLite 和 R。
现在,当我登录并捕获数据时,它会保存,但是当我以不同的用户登录时,我找不到捕获的数据。
问题是 docker 图像上似乎没有保存数据,这是为什么,我该如何补救它?
为了问题测试目的:
解决方案link:https://xxasdfqexx.com
数据采集器用户:
用户名:xxxxx
密码:Fxxxx
管理员用户:
用户名:inxxx
密码:prupxxxxx
测试:
在解决方案中,如果您转到数据管理选项卡,输入数据,然后右键单击 table 并插入一个新行,单击保存更改,它必须安全地对 docker 图片但它只是暂时这样做,其他用户看不到所做的更改。
这是预期的行为。 SQLite 数据库存储在 运行 容器 中,而不是图像。因此,当容器关闭时它会丢失。 shinyproxy 为每个用户启动一个新容器。 docker 的一般解决方案是使用安装到 运行 容器中的 external volume,并使用 file/directory 存储持久数据。与shinyproxy一起,你必须使用docker-volumes
,c.f。
https://www.shinyproxy.io/configuration/#apps.
将这些放在一起,您可以在 shinyproxy 配置中使用如下内容:
apps:
- name: ...
docker-cmd: ...
docker-image: ...
docker-volumes: /some/local/path/:/mnt/persistent
在 shiny 应用程序中是这样的:
dbConnect(RSQLite::SQLite(), "/mnt/persistent/my-db.sqlite")