首页 > 解决方案 > 使用 docker 交付桌面应用程序是个好主意吗?

问题描述

我对向用户提供桌面应用程序的一些好方法感兴趣。该应用程序是使用 LAMP 制作的网络应用程序,但我需要和用户在桌面上运行它。我想为此选择一些好的跨平台解决方案。

我已经有这个应用程序的 docker 映像。

是否有使用 docker 向用户交付应用程序的做法?就像安装 docker(如果尚未安装)并运行 docker 映像的安装包。有这方面的经验吗?

标签: dockerlamp

解决方案


Docker 不适合这个用例。我的建议是选择一种广泛可用的脚本语言,如 Python 或 JavaScript 来实现,并使用 SQLite 等嵌入式数据库作为持久层;那么您的最终用户只需要安装语言解释器(他们可能已经拥有)和您的应用程序,他们就可以使用他们已经拥有的浏览器作为前端。

Docker 在这里提出了许多挑战;如果您浏览其他问题,您会看到人们经常遇到其中的一些问题:

  • 在非 Linux 上,运行 Linux 应用程序的 Docker 需要一个 Linux VM,它将“轻量级容器系统”变成“成熟的资源占用虚拟机”。

  • 在非 Linux 上,可访问的主机文件系统路径集是有限的。如果您的应用程序试图访问 Windows F: 驱动器上的用户数据以选择一个最近的问题,那么您的应用程序将无法工作。

  • 如果您的应用程序管理着一定数量的“用户”数据,那么管理文件系统权限是很棘手的,并且在每个操作系统上都不同。

  • 如果您的应用程序尝试呈现 GUI,并且您尝试构建“一个可移植映像”,那么您将被迫使用 Linux X11 平台;这需要主机上匹配的 X 服务器(额外的软件安装!),以及一些额外的挑剔绑定安装、环境变量和主机设置。

  • 如果您的应用程序尝试呈现 GUI,则默认情况下它无法访问用户的非 Docker 桌面首选项,因此它的外观和行为可能与本机应用程序不同。

  • Docker 需要一定数量的升级权限才能运行,因此如果您遇到安全问题(尤其是在启动处理上述所有问题的容器的机制中),则更有可能危及整个系统。

这一切都不是不可克服的,但也很难看到所需的努力和额外的复杂性有什么特别的好处。


推荐阅读