[原]打造數據產品的快速原型: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商業使用請聯繫做者。

相關文章
相關標籤/搜索