代码之家  ›  专栏  ›  技术社区  ›  nybre

数据库未用ShinyProxy存储在Docker映像中

  •  2
  • nybre  · 技术社区  · 6 年前

    我已经开发出一种解决方案,并决定使用新诺昔。

    我有以下问题:

    用户需要捕获解决方案上的数据,对于访问该解决方案的所有用户,这些数据必须存储在数据库中并更新,为此,我使用了sqlite和r。

    现在,当我登录并捕获数据时,它会保存,但当我使用其他用户登录时,我找不到捕获的数据。

    问题是,保存数据似乎并没有保存在Docker图像上,这是为什么,我该如何着手修复它?

    出于问题测试的目的:

    解决方案链接: https://xxasdfqexx.com

    数据捕获器用户:

    用户名:xxxxx

    密码:fxxx

    管理员用户:

    用户名:inxxx

    密码:prupxxx

    测试:

    在解决方案中,如果您转到“数据管理”选项卡上的“数据输入”,然后右键单击某个表并插入新行,单击“保存更改”,则它必须安全地对Docker图像进行新更改,但这只是暂时的,其他用户看不到所做的更改。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Ralf Stubner    6 年前

    这是预期的行为。sqlite数据库存储在 容器 ,而不是图像。因此,当容器关闭时,它会丢失。ShinyProxy为每个用户启动一个新容器。Docker的一般解决方案是使用 external volume 安装到正在运行的容器中,并使用该文件/目录存储持久数据。加上辛普罗西,你必须使用 docker-volumes ,到岸价 https://www.shinyproxy.io/configuration/#apps 是的。

    把这个放在一起,你可以在shinyproxy配置中使用,比如:

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

    在闪亮的应用程序中,比如:

    dbConnect(RSQLite::SQLite(), "/mnt/persistent/my-db.sqlite")