如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?
2019獨角獸企業重金招聘Python工程師標準>>>
本文作者 Jacek Laskowski 擁有近20年的應用程序開發經驗,現 CodiLime 的軟件開發團隊 Leader,曾從 IBM 取得多種資格認證。在這篇博文中,Jacek 分享了 Warsaw Scala Enthusiasts Meetup 上 Rafal Krzewski 介紹的一個 Docker sbt 插件。本文系 OneAPM 工程師編譯整理:
雖然在 DeepSense.io 項目中,Docker 已得到了非常深入的應用,但是如果沒有接觸到 Rafal Krzewski 在 Warsaw Scala Enthusiasts Meetup 上分享的兩個 Docker sbt 插件中的一個—— sbt-native-packager (另一個是 sbt-docker ),筆者仍然不會意識到部署一個 Scala Web 應用程序可以這么簡單。
本文將著重介紹使用 Docker 來部署一個基于 Play Framework 的 Scala Web 應用程序會多么便捷,當然這個過程主要基于 sbt-native-packager 插件。
建立基于 Play Framework Web 的應用程序
通過 Typesafe Activator 工具使用 activator new 命令建立一個新的 Web 應用程序:
使用 cd 命令進入 play-dockerized 目錄,并執行 sbt run 命令來啟動應用程序:
到了這里,http://localhost:9000 已經可以被訪問了。如你所見,這是一個基于 Play Framework 2.4.2 的 Web 應用程序。
發布 Docker image——docker:publishLocal
因為要使用 sbt-native-packager 插件,所以需要使用 Ctrl+D 結束之前的命令,并且執行 sbt docker:publishLocal命令:
在這里,相信很多人已經看到了 sbt-native-packager 插件設計的聰明之處,它非常巧妙地利用 publishLocal 任務來發布一個 Docker repository。
通過上一步,一個全新的 Docker image play-dockerized:1.0-SNAPSHOT 被建立,這里可以使用 docker images 來查看它的屬性。
Docker 時間!
你可以使用 docker run 命令在 play-dockerized 外開啟一個容器。
docker run 命令的替代選項是使用 -p 來發現 Docker 虛擬網絡之外的9000端口(本地可用端口是8080),同時使用-- name 為容器友好命名,而不是默認的哈希命名方式。
在另一個終端 docker ps 來查看容器的運行情況:
通過 docker stop play-8080 來終止這個容器。這個基于 Play Framework 的應用程序將無法被訪問。如果重新啟動的話,可以執行 docker start play-8080 命令。
總結
可以如此簡單地給一個基于 Play Framework 的 Scala Web 應用程序建立 Docker image,相信很多人都會像筆者一樣離不開它。一旦將一個應用程序轉換成 Docker image,那么你就可以使用其他命令,同時你也可以甩開應用程序對環境的依賴。
原文鏈接:Docker Your Scala Web Application (Play Framework)
本文系 OneAPM 工程師編譯整理。OneAPM 是應用性能管理領域的新興領軍企業,能幫助企業用戶和開發者輕松實現:緩慢的程序代碼和 SQL 語句的實時抓取。想技術文章,請訪問 OneAPM 官方博客。
轉載于:https://my.oschina.net/oneapmofficial/blog/490350
總結
以上是生活随笔為你收集整理的如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再谈 CSS 预处理器
- 下一篇: AS3深拷贝数据对象(1)深拷贝基本数据