[原]打造數(shù)據(jù)產(chǎn)品的快速原型:Shiny的Docker之旅

概述

本文將介紹如何通過Docker+Shiny-Server技術(shù)極速打造Web開發(fā),并通過實(shí)戰(zhàn)案例進(jìn)行演示垃瞧。

為什么使用Shiny

Shiny是R中的一種Web開發(fā)框架,使得R的使用者不必太了解css蒿赢、js只需要了解一些html的知識(shí)就可以快速完成web開發(fā)奢方,且shiny包集成了bootstrap搔扁、jquery、ajax等特性蟋字,極大解放了作為統(tǒng)計(jì)語言的R的生產(chǎn)力阁谆。使得非傳統(tǒng)程序員的R使用者不必依賴于前端、后端工程師就可以自己依照業(yè)務(wù)完成一些簡單的數(shù)據(jù)可視化工作愉老,快速驗(yàn)證想法的可靠性场绿。

為什么使用Docker

如果說2年以前,你們沒有學(xué)習(xí)Git嫉入、GitHub你就落伍了⊙娴粒現(xiàn)在,流行的方向則是Docker咒林!Docker是一種類似于虛擬機(jī)的技術(shù)熬拒,主要解決快速部署的問題,在Docker中安裝的軟件和主機(jī)中的軟件可以完全隔離垫竞,并通過Daocloud或者h(yuǎn)ub.docker.com等云服務(wù)快速建立Docker倉庫澎粟,快速復(fù)用Docker鏡像。Docker已經(jīng)不僅僅是DevOps人員手中的神器了欢瞪,每一個(gè)開發(fā)者都應(yīng)該學(xué)會(huì)如何使用Docker活烙。

由于Docker的標(biāo)準(zhǔn)交付特性使得 shiny 應(yīng)用在運(yùn)維、部署遣鼓、交付時(shí)都是標(biāo)準(zhǔn)化的啸盏,在大規(guī)模團(tuán)隊(duì)協(xié)作時(shí)體現(xiàn)出了很大的價(jià)值,開發(fā)和運(yùn)維人員不必再為環(huán)境配置擔(dān)心骑祟,提高了開發(fā)效率回懦。而對于個(gè)人開發(fā)者气笙,參加黑客馬拉松或者快速原型開發(fā),Docker也是不二之選怯晕,利用Docker線程級(jí)別的快速復(fù)用機(jī)制也使得一個(gè)上G的環(huán)境配置可以在很短的時(shí)間內(nèi)快速完成潜圃。

Docker的弊端在于對于個(gè)人開發(fā)者而言,想要構(gòu)建一個(gè)標(biāo)準(zhǔn)的Docker鏡像并提交到Docker Hub或自建的Docker Registery上需要按規(guī)定寫DockerFile舟茶, 有時(shí)候這反而會(huì)增加項(xiàng)目的復(fù)雜度秉犹。

準(zhǔn)備

  • VPS或任意一臺(tái) 類Unix服務(wù)器,本文選用了AWS的Ubuntu服務(wù)器作為示例稚晚。實(shí)際使用中Windows或者M(jìn)ac電腦下載DockerToolBox軟件安裝docker后也可以使用崇堵。

部署

步驟一:安裝Docker

首先,ssh進(jìn)入linux主機(jī)客燕。本文以AWS上的ubuntu14.04的新主機(jī)為例鸳劳。

參考文獻(xiàn)1


ssh -i harryzhu.pem ubuntu@52.88.172.224

其次,安裝Docker相關(guān)的組件


sudo apt-get update

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

步驟二:安裝Shiny-Server

安裝完畢也搓,從hub.docker.com拉去最新的shiny-server鏡像


docker run -d -p 3838:3838 quantumobject/docker-shiny

  • 上面的中 docker run表示根據(jù)quantumobject/docker-shiny鏡像啟動(dòng)一個(gè)新的容器赏廓。

  • -d表示以demon形式運(yùn)行,掛在后臺(tái)運(yùn)行傍妒。

  • -p 3838:3838表示將主機(jī)的3838端口和docker集群中的3838做端口映射

  • 此外docker run在找不到鏡像時(shí)會(huì)先從docker hub中自動(dòng)下載幔摸,下載完后自動(dòng)再啟動(dòng)容器。

訪問http://52.88.172.224:3838/

從登陸到部署颤练,5行代碼搞定既忆!

結(jié)束語

如果想要加入更多Shiny的Web應(yīng)用可以從GitHub上找到大量的Shiny實(shí)例,然后根據(jù)你的需求稍微改造即可嗦玖!

示例一:數(shù)據(jù)可視化

下面舉一個(gè)例子患雇,通過訪問Rstudio的官方shiny實(shí)例可以看到實(shí)例的目錄,在本地的R中執(zhí)行


if (!require(shiny))

install.packages("shiny")

shiny::runGitHub("rstudio/shiny-examples", subdir="063-superzip-example")

你也可以訪問該網(wǎng)址http://shiny.rstudio.com/gallery/superzip-example.html看到在線的例子宇挫。

示例二:表單收集

你將可以看到這一實(shí)例苛吱,通過修改subdir參數(shù)可以查看其他實(shí)例。

比如


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

現(xiàn)在器瘪,回到ubuntu主機(jī)上翠储,進(jìn)入剛才生成的docker容器中


docker exec -it docker-shiny /bin/bash

根據(jù)參考文獻(xiàn)2

進(jìn)入網(wǎng)站顯示的文檔的根目錄,下載rstudio的shiny-server實(shí)例


cd /srv/shiny-server

wget https://github.com/rstudio/shiny-examples/archive/master.zip

unzip master.zip

現(xiàn)在重新訪問 http://52.88.172.224:3838/shiny-examples-master/ 你便可以任意選擇一個(gè)實(shí)例進(jìn)行復(fù)用了。

實(shí)戰(zhàn)案例:

在Segmentfault 2015 北京站的黑客馬拉松上橡疼,由幾名之前搞生物援所、基因的R語言使用者組成的基飯團(tuán)隊(duì)(15組),基于shiny完成了一次漂亮的逆襲衰齐,最終獲得了大賽的優(yōu)勝獎(jiǎng)一枚任斋。

作為分享主義者(sharism),本人所有互聯(lián)網(wǎng)發(fā)布的圖文均遵從CC版權(quán)耻涛,轉(zhuǎn)載請保留作者信息并注明作者 Harry Zhu 的 FinanceR專欄:https://segmentfault.com/blog/harryprince废酷,如果涉及源代碼請注明GitHub地址:https://github.com/harryprince。微信號(hào): harryzhustudio

商業(yè)使用請聯(lián)系作者抹缕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澈蟆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卓研,更是在濱河造成了極大的恐慌趴俘,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奏赘,死亡現(xiàn)場離奇詭異寥闪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)磨淌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門疲憋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梁只,你說我怎么就攤上這事缚柳。” “怎么了搪锣?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵秋忙,是天一觀的道長。 經(jīng)常有香客問我构舟,道長灰追,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任狗超,我火速辦了婚禮监嗜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抡谐。我一直安慰自己裁奇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布麦撵。 她就那樣靜靜地躺著刽肠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪免胃。 梳的紋絲不亂的頭發(fā)上音五,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音羔沙,去河邊找鬼躺涝。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扼雏,可吹牛的內(nèi)容都是我干的坚嗜。 我是一名探鬼主播夯膀,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苍蔬!你這毒婦竟也來了诱建?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤碟绑,失蹤者是張志新(化名)和其女友劉穎俺猿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體格仲,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡押袍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凯肋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谊惭。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖否过,靈堂內(nèi)的尸體忽然破棺而出午笛,到底是詐尸還是另有隱情,我是刑警寧澤苗桂,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布药磺,位于F島的核電站,受9級(jí)特大地震影響煤伟,放射性物質(zhì)發(fā)生泄漏癌佩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一便锨、第九天 我趴在偏房一處隱蔽的房頂上張望围辙。 院中可真熱鬧,春花似錦放案、人聲如沸姚建。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掸冤。三九已至,卻和暖如春友雳,著一層夾襖步出監(jiān)牢的瞬間稿湿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工押赊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饺藤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像涕俗,于是被迫代替她去往敵國和親罗丰。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容