本文將介紹如何經過Docker+Shiny-Server技術極速打造Web開發,並經過實戰案例進行演示。css
Shiny是R中的一種Web開發框架,使得R的使用者沒必要太瞭解css、js只須要了解一些html的知識就能夠快速完成web開發,且shiny包集成了bootstrap、jquery、ajax等特性,極大解放了做爲統計語言的R的生產力。使得非傳統程序員的R使用者沒必要依賴於前端、後端工程師就能夠本身依照業務完成一些簡單的數據可視化工做,快速驗證想法的可靠性。html
若是說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
首先,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
安裝完畢,從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")
如今,回到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商業使用請聯繫做者。