文档章节

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2015/08/10 20:23
字数 745
阅读 336
收藏 2

本文作者 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 应用程序:

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

使用 cd 命令进入 play-dockerized 目录,并执行 sbt run 命令来启动应用程序:

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

到了这里,http://localhost:9000 已经可以被访问了。如你所见,这是一个基于 Play Framework 2.4.2 的 Web 应用程序。

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

发布 Docker image——docker:publishLocal

因为要使用 sbt-native-packager 插件,所以需要使用 Ctrl+D 结束之前的命令,并且执行 sbt docker:publishLocal命令:

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

在这里,相信很多人已经看到了 sbt-native-packager 插件设计的聪明之处,它非常巧妙地利用 publishLocal 任务来发布一个 Docker repository

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

通过上一步,一个全新的 Docker image play-dockerized:1.0-SNAPSHOT 被建立,这里可以使用 docker images 来查看它的属性。

Docker 时间!

你可以使用 docker run 命令在 play-dockerized 外开启一个容器。

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

docker run 命令的替代选项是使用 -p 来发现 Docker 虚拟网络之外的9000端口(本地可用端口是8080),同时使用-- name 为容器友好命名,而不是默认的哈希命名方式。

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

在另一个终端 docker ps 来查看容器的运行情况:

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用

通过 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 官方博客

© 著作权归作者所有

共有 人打赏支持
OneAPM蓝海讯通
粉丝 93
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
加载中

评论(2)

livehl
livehl
好吧
mac 下需要下载 Docker Toolbox
livehl
livehl
mac 下执行报错 error] Post http://%2Fvar%2Frun%2Fdocker.sock/v1.20/build?cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&forcerm=1&memory=0&memswap=0&rm=1&t=handka2%3A2.0.0&ulimits=null: dial unix /var/run/docker.sock: connect: no such file or directory.
[error] * Are you trying to connect to a TLS-enabled daemon without TLS?
[error] * Is your docker daemon up and running?
java.lang.RuntimeException: Nonzero exit value: 1
  at com.typesafe.sbt.packager.docker.DockerPlugin$.publishLocalDocker(DockerPlugin.scala:288)
Play Framework 2.0 介绍

Play Framework 刚刚发布了 2.0 正式版,来看看 Play Framework 2.0 的新特性介绍吧。 原生支持 Java 和 Scala Play Framework 1.x 完全是采用 Java 编写的,可通过插件来支持 Scala,而 2....

曾沙
2012/11/26
348
0
Play Framework 2.0 介绍

Play Framework 刚刚发布了 2.0 正式版,来看看 Play Framework 2.0 的新特性介绍吧。 原生支持 Java 和 Scala Play Framework 1.x 完全是采用 Java 编写的,可通过插件来支持 Scala,而 2....

红薯
2012/03/14
13.2K
20
在 Scala IDE 2.0 中设置和使用 Play Framework 2.0

本文将向你介绍如何在 Scala IDE 开发环境中设置并开始使用 Play Framework 2.0 . 前提要求 Eclipse 3.6.2 (Helios) 并安装好 Scala IDE for Scala 2.9 插件 (update site: http://download....

红薯
2012/02/17
3.7K
3
Play Framework 2.4 发布,Java Web 框架

Play Framework 2.4 发布,此版本主要改进内容如下: 依赖注入 可以直接嵌入 Play 应用 支持聚合反向路由器 Java 8 支持,要求 JDK 8 Maven/sbt 标准布局 Akka HTTP 支持 Reactive Streams 支...

oschina
2015/05/30
9.6K
46
Play Framework 2.5 发布,要求 Java 8 支持

Play Framework 2.5 发布了,该版本最大的变化是使用 Akka Streams 替代原有基于迭代的异步 IO API。此次是改进对 WebSocket 帧的控制;使用 Java 8 平台;支持其他日志框架;可记录执行的 ...

oschina
2016/03/05
8.6K
59

没有更多内容

加载失败,请刷新页面

加载更多

广而告之

【全民云计算】云主机低至两折

SummerGao
9分钟前
0
0
【机器学习PAI实战】—— 玩转人工智能之利用GAN自动生成二次元头像

前言 深度学习作为人工智能的重要手段,迎来了爆发,在NLP、CV、物联网、无人机等多个领域都发挥了非常重要的作用。最近几年,各种深度学习算法层出不穷, Generative Adverarial Network(GAN...

zhaowei121
11分钟前
0
0
0326 第七次课:vim

VIM工具 一、vim介绍 vim与vi的区别 vim是vi的升级版,vim与vi最大的区别是vim带有颜色显示。 使用vim需要安装:yum -y install yum vim三种模式: 一般模式、编辑模式、命令模式 |模式|说明...

wxy丶
13分钟前
0
0
nmap扫描主机存活情况

nmap -sP -iL ip.txt -oG ip_output.txt -sP (Ping扫描) -iL(从列表中输入) -oG (Grep输出) nmap -sP --min-hostgroup 1024 --min-parallelism 1024 -iL ip.txt -oG ip_output1113.txt......

Frost729
22分钟前
0
0
Java开发找工作最懵圈的问题:到底啥是分布式系统开发经验?

前言 现在有很多Java技术方向的同学在找工作的时候,肯定都会去招聘网站上找职位投递简历。 但是在很多职位JD上往往会有这样的一个要求:熟悉分布式系统理论、设计和开发,具备复杂分布式系统...

Java爬坑之路
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部