本文作者 Jacek Laskowski 擁有近20年的應(yīng)用程序開發(fā)經(jīng)驗(yàn),現(xiàn) CodiLime 的軟件開發(fā)團(tuán)隊(duì) Leader懒叛,曾從 IBM 取得多種資格認(rèn)證丸冕。在這篇博文中,Jacek 分享了 Warsaw Scala Enthusiasts Meetup 上 Rafal Krzewski 介紹的一個 Docker sbt 插件薛窥。本文系 OneAPM 工程師編譯整理:
雖然在 DeepSense.io 項(xiàng)目中胖烛,Docker 已得到了非常深入的應(yīng)用,但是如果沒有接觸到 Rafal Krzewski 在 Warsaw Scala Enthusiasts Meetup 上分享的兩個 Docker sbt 插件中的一個—— sbt-native-packager (另一個是 sbt-docker )诅迷,筆者仍然不會意識到部署一個 Scala Web 應(yīng)用程序可以這么簡單佩番。
本文將著重介紹使用 Docker 來部署一個基于 Play Framework 的 Scala Web 應(yīng)用程序會多么便捷,當(dāng)然這個過程主要基于 sbt-native-packager 插件罢杉。
建立基于 Play Framework Web 的應(yīng)用程序
通過 Typesafe Activator 工具使用 activator new
命令建立一個新的 Web 應(yīng)用程序:
使用 cd
命令進(jìn)入 play-dockerized
目錄趟畏,并執(zhí)行 sbt run
命令來啟動應(yīng)用程序:
到了這里,http://localhost:9000 已經(jīng)可以被訪問了滩租。如你所見赋秀,這是一個基于 Play Framework 2.4.2 的 Web 應(yīng)用程序。
發(fā)布 Docker image——docker:publishLocal
因?yàn)橐褂?sbt-native-packager 插件律想,所以需要使用 Ctrl+D 結(jié)束之前的命令猎莲,并且執(zhí)行 sbt docker:publishLocal
命令:
在這里,相信很多人已經(jīng)看到了 sbt-native-packager 插件設(shè)計的聰明之處技即,它非常巧妙地利用 publishLocal
任務(wù)來發(fā)布一個 Docker repository
著洼。
通過上一步,一個全新的 Docker image play-dockerized:1.0-SNAPSHOT 被建立,這里可以使用 docker images 來查看它的屬性身笤。
Docker 時間豹悬!
你可以使用 docker run
命令在 play-dockerized
外開啟一個容器。
docker run
命令的替代選項(xiàng)是使用 -p
來發(fā)現(xiàn) Docker
虛擬網(wǎng)絡(luò)之外的9000
端口(本地可用端口是8080
)展鸡,同時使用-- name
為容器友好命名屿衅,而不是默認(rèn)的哈希命名方式。
在另一個終端 docker ps 來查看容器的運(yùn)行情況:
通過 docker stop play-8080
來終止這個容器莹弊。這個基于 Play Framework
的應(yīng)用程序?qū)o法被訪問涤久。如果重新啟動的話,可以執(zhí)行 docker start play-8080
命令忍弛。
總結(jié)
可以如此簡單地給一個基于 Play Framework 的 Scala Web 應(yīng)用程序建立 Docker image响迂,相信很多人都會像筆者一樣離不開它。一旦將一個應(yīng)用程序轉(zhuǎn)換成 Docker image细疚,那么你就可以使用其他命令蔗彤,同時你也可以甩開應(yīng)用程序?qū)Νh(huán)境的依賴。
原文鏈接:Docker Your Scala Web Application (Play Framework)
本文系 OneAPM 工程師編譯整理疯兼。OneAPM 是應(yīng)用性能管理領(lǐng)域的新興領(lǐng)軍企業(yè)然遏,能幫助企業(yè)用戶和開發(fā)者輕松實(shí)現(xiàn):緩慢的程序代碼和 SQL 語句的實(shí)時抓取。想閱讀更多技術(shù)文章吧彪,請?jiān)L問 OneAPM 官方博客待侵。