Docker Shiny: 将 R Shiny应用部署到云端的简易指南

在现代数据科学和应用开发领域,Docker 已经成为一种流行的技术,用于创建、部署和运行应用程序。Docker 容器化技术可以将应用程序及其依赖打包到一个可移植的容器中,从而简化部署过程并确保环境一致性。本文将介绍如何使用 Docker 部署 R Shiny 应用,让您的应用轻松上云。

什么是 Docker?

Docker 是一个开源平台,它利用容器化技术来自动化部署应用程序。容器是轻量级的、独立的、可执行的包,包含运行应用程序所需的一切:代码、运行时、系统工具、系统库等。Docker 容器与虚拟机不同,它们共享宿主机的操作系统内核,因此更加轻便高效。

Docker部署的步骤

在docker hub上有很多已经开发好的docker-shiny镜像,已经集成了shiny-server,我们直接从上面在pull下来,通过镜像创建一个容器,即可完成部署。

一、搜索镜像

首先,我们搜索一下docker hub上有哪些docker-shiny镜像,使用命令

docker search docker-shiny
拉取镜像

可以看到Starts数最多是的quantumobject/docker-shiny镜像,我们直接下载这个镜像,使用命令

docker pull quantumobject/docker-shiny

二、运行容器

这个镜像最新版有1.13G,下载完成后,运行容器后即可完成部署

# 通过端口映射,将容器的3838端口映射到宿主机的3838端口
docker run -d -p 3838:3838 quantumobject/docker-shiny

# 也可以挂载容器中的/srv/shiny-server目录到宿主机
docker run -d -p 3838:3838 -v /src/shiny-server:/srv/shiny-server quantumobject/docker-shiny

容器成功运行后,我们直接访问http://宿主机的ip:3838即可访问到默认的index页面。

三、访问shiny server容器

如果我们通过目录挂载的方式运行容器,那么我们只需要将我们的shiny程序放到宿主机的/srv/shiny-server目录下即可。当然我们也可以进入容器,做一些其它的配置。

# 进入容器
docker exec -it container-id /bin/bash

进入容器后,我们可以安装一些你的shiny应用所需要的包,也可以修改shiny server的配置文件等,操作和在本地安装shiny server一样。

四、打包镜像

我们在容器的所有操作,当容器被销毁时,里面的配置和安装的R包都没有了,因此我们修改了之后,可以通过commit保存为新的镜像。

当然,我们也可以直接修改镜像的DockerFile文件,生成符合我们项目应用的docker-shiny镜像,quantumobject/docker-shiny镜像的作者已经将其上传到了github,仓库的地址为:https://github.com/QuantumObject/docker-shiny