[原]打造数据产品的快速原型:Shiny的Docker之旅

概述

本文将介绍如何经过Docker+Shiny-Server技术极速打造Web开发,并经过实战案例进行演示。css

为何使用Shiny

Shiny是R中的一种Web开发框架,使得R的使用者没必要太了解css、js只须要了解一些html的知识就能够快速完成web开发,且shiny包集成了bootstrap、jquery、ajax等特性,极大解放了做为统计语言的R的生产力。使得非传统程序员的R使用者没必要依赖于前端、后端工程师就能够本身依照业务完成一些简单的数据可视化工做,快速验证想法的可靠性。html

为何使用Docker

若是说2年之前,大家没有学习Git、GitHub你就落伍了。如今,流行的方向则是Docker!Docker是一种相似于虚拟机的技术,主要解决快速部署的问题,在Docker中安装的软件和主机中的软件能够彻底隔离,并经过Daocloud或者hub.docker.com等云服务快速创建Docker仓库,快速复用Docker镜像。Docker已经不单单是DevOps人员手中的神器了,每个开发者都应该学会如何使用Docker。前端

因为Docker的标准交付特性使得 shiny 应用在运维、部署、交付时都是标准化的,在大规模团队协做时体现出了很大的价值,开发和运维人员没必要再为环境配置担忧,提升了开发效率。而对于我的开发者,参加黑客马拉松或者快速原型开发,Docker也是不二之选,利用Docker线程级别的快速复用机制也使得一个上G的环境配置能够在很短的时间内快速完成。jquery

Docker的弊端在于对于我的开发者而言,想要构建一个标准的Docker镜像并提交到Docker Hub或自建的Docker Registery上须要按规定写DockerFile, 有时候这反而会增长项目的复杂度。linux

准备

  • VPS或任意一台 类Unix服务器,本文选用了AWS的Ubuntu服务器做为示例。实际使用中Windows或者Mac电脑下载DockerToolBox软件安装docker后也可使用。git

部署

步骤一:安装Docker

首先,ssh进入linux主机。本文以AWS上的ubuntu14.04的新主机为例。
参考文献1程序员

ssh -i harryzhu.pem ubuntu@52.88.172.224

其次,安装Docker相关的组件github

sudo apt-get update
wget -qO- https://get.docker.com/ | sh

步骤二:安装Shiny-Server

安装完毕,从hub.docker.com拉去最新的shiny-server镜像web

docker run -d -p 3838:3838 quantumobject/docker-shiny
  • 上面的中 docker run表示根据quantumobject/docker-shiny镜像启动一个新的容器。ajax

  • -d表示以demon形式运行,挂在后台运行。

  • -p 3838:3838表示将主机的3838端口和docker集群中的3838作端口映射

  • 此外docker run在找不到镜像时会先从docker hub中自动下载,下载完后自动再启动容器。

访问http://52.88.172.224:3838/

从登录到部署,5行代码搞定!

结束语

若是想要加入更多Shiny的Web应用能够从GitHub上找到大量的Shiny实例,而后根据你的需求稍微改造便可!

示例一:数据可视化

下面举一个例子,经过访问Rstudio的官方shiny实例能够看到实例的目录,在本地的R中执行

if (!require(shiny))
  install.packages("shiny")
shiny::runGitHub("rstudio/shiny-examples", subdir="063-superzip-example")


你也能够访问该网址http://shiny.rstudio.com/gallery/superzip-example.html看到在线的例子。

示例二:表单收集

你将能够看到这一实例,经过修改subdir参数能够查看其余实例。
好比

shiny::runGitHub("rstudio/shiny-examples", subdir="066-upload-file")

实例三:数据生成器

data-generation

实例四:回归模拟器

regression

更多实例

如今,回到ubuntu主机上,进入刚才生成的docker容器中

docker exec -it docker-shiny /bin/bash

根据参考文献2
进入网站显示的文档的根目录,下载rstudio的shiny-server实例

cd /srv/shiny-server
wget https://github.com/rstudio/shiny-examples/archive/master.zip
unzip master.zip

如今从新访问 http://52.88.172.224:3838/shiny-examples-master/ 你即可以任意选择一个实例进行复用了。

实战案例:

在Segmentfault 2015 北京站的黑客马拉松上,由几名以前搞生物、基因的R语言使用者组成的基饭团队(15组),基于shiny完成了一次漂亮的逆袭,最终得到了大赛的优胜奖一枚。

参考资料

做为分享主义者(sharism),本人全部互联网发布的图文均听从CC版权,转载请保留做者信息并注明做者 Harry Zhu 的 FinanceR专栏:https://segmentfault.com/blog...,若是涉及源代码请注明GitHub地址:https://github.com/harryprince。微信号: harryzhustudio商业使用请联系做者。

相关文章
相关标签/搜索