如何解决将闪亮应用程序的库部署到闪亮服务器的最佳标准方法?
我正在尝试在 Shiny Server 上部署一个闪亮的应用程序。我可以毫无问题地做到这一点,但是在尝试部署具有许多依赖项(远程和本地)的应用时,我们不断遇到问题。
我们使用 renv 来跟踪依赖项(在 Windows dev box 上)并在 Linux prod box 上从头开始重建它,但是即使依赖项被重建并且一些被加载,其他人没有。运行该应用的用户的 .Rprofile 指向 renv 激活脚本。
为了清楚起见,我们需要并希望所有 R 代码都从 Linux 机器上的源代码构建。
将闪亮应用程序的库部署到闪亮服务器的最佳或标准方式(或什至是一种糟糕的工作方式)是什么? renv 是适合这种情况的工具还是有更好的工具?
我试过阅读闪亮的服务器文档并且关闭它只提到它使用运行应用程序的用户的 .Rprofile,但似乎没有任何关于部署依赖的最佳方式的指南图书馆。
解决方法
此 renv 文档讨论了一些可重复性警告:
- 系统依赖项,以及
- CRAN 中的更改(例如,二进制文件不再可用)。
由于您正在从 Windows 迁移到 Linux 系统,因此您的软件包可能具有您在 Windows 中没有遇到的未满足的系统依赖项(需要在 R 之外安装的东西)。例如,某些与 Excel 相关的 R 包需要 rJava
,并且安装其相关的系统依赖项并在 Linux 上运行有时可能是一个挑战。您可以使用 RStudio Package Manager Website 来确定特定 Linux 操作系统的不同 R 包需要哪些系统依赖项。此外,您在 Linux 上运行这些应用程序时收到的错误消息应该为您指明正确的方向。这些系统依赖项是您必须自己管理的,因为 renv
不需要。
但是对于生产级别更高的解决方案,您可以尝试使用 Docker 和 ShinyProxy。对于具有许多依赖项或特别是外部依赖项(例如 Python、SQL 等)的应用程序,您可以使用 Docker 保证更多的可重复性。 ShinyProxy 可用于托管内置于 docker 镜像中的应用程序。这是更多的工作,但您要确保整个系统是可重现的,而不仅仅是 R 版本和 R 包。 ShinyProxy 还增加了额外的托管功能,如用户身份验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。