本文作者 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 官方博客

如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?的更多相关文章

  1. 如何使用Docker部署一个Go Web应用程序

    熟悉Docker如何提升你在构建.测试并部署Go Web应用程序的方式,并且理解如何使用Semaphore来持续部署. 简介 大多数情况下Go应用程序被编译成单个二进制文件,web应用程序则会包括模版 ...

  2. 手把手教你用Docker部署一个MongoDB集群

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...

  3. 【docker部署】基于linux的centos操作系统部署安装docker容器

    一.docker介绍 容器是轻量级的,包含应用运行所需所有东西(代码.库.运行时环境.系统设置,以及依赖关系)的独立的包.每个容器都部署于它自己的 CPU.内存.块 I/O,以及网络资源上,所有这些都 ...

  4. docker部署一个简单的mian.py项目文件

    安装docker yum install -y docker  启动docker systemctl start docker   查询可安装的Python版本,默认centos python 2.7 ...

  5. 在Ubuntu上部署一个基于webrtc的多人视频聊天服务

    最近研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了 ...

  6. 部署一个基于python语言的web发布环境

    ---恢复内容开始--- 1) 一门面向对象的语言 2)拥有丰富的库 3)可移植性 4)免费.开源 5)简单易易学 可做软件开发.人工智能.web开发等等 部署流程: Cnetos7.5+Nginx+ ...

  7. docker 部署一个 aspnetmvc 程序

    准备mvc的程序[asp.net mvc5 网站]  使用刚才创建的镜像,并把上诉文件目录挂载到iis指定磁盘docker run -d -p 83:80 --name docker-drgs -v  ...

  8. 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...

  9. 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, ...

随机推荐

  1. 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第二讲 WPF中 绑定

    说到WPF, 当然得从绑定说起,这也是WPF做的很成功的一个地方,这也是现在大家伙都在抛弃使用winform的其中一个主要原因,Binding这个东西从早说到完其实都说不完的,我先就做一些基本的介绍, ...

  2. instanceof、==号、Objetc类

    1)instanceof: 判断某个对象是否为某个类的实例,注意多态的运用,一个父类引用指向子类的对象,根据继承,子类就是父类,所以子类也可以看做是父类的一个实例.  形式:引用 instanceof ...

  3. Go语言中如何写Get和Set方法

    首先我们要知道,在Go中方法名首字母大写是要导出的方法(也就是公有方法,public),而小写则是不导出的方法(私有的,private). Go官方不提供对Get.Set方法的自动支持.对是否设置Ge ...

  4. 将获得到的json赋值到下拉框

    $(function () { $.getJSON('handler/addEmployees.ashx', function (json) { alert(json.length); //遍历赋值 ...

  5. DHCP Server软件使用教程

    DHCP Server软件使用教程 前提网络环境配置 电脑连接上wifi 网络和共享中心中更改适配器,共享无线网卡给以太网网卡 手动设置以太网网卡ipv4地址为192.168.1.1,子网掩码为255 ...

  6. VC++编程之对话框贴图

    基于对话框的程序写好后,为对话框贴上个图片让界面更加美观(我承认做界面,MFC显得力不从心,不如QT). 其实很简单,我们以位图为例,选好我们需要的位图资源(bmp),假若自己的图片不是位图资源,可以 ...

  7. Teamwork——Week4 团队项目之NABC

    项目框架——NABC模型 一.N(Need需求) 我们组主要的用户对象是第三小组——UI小组的同学们,因此我们的用户需求就是他们的数据需求. 1)提供给UI小组整理好的数据库,和前一组讨论好数据结构. ...

  8. Daily Scrum5

    总体来说,我们今天的工作遇到了一些阻碍.前期的对于代码的大量阅读并没有使我们的进度突飞猛进.今天我们完成了关于敏感词汇辨别优化和防滥用部分的代码(之后会有微博来详细介绍),但是我们无法运行程序并测试, ...

  9. 软件工程随堂小作业——随机四则运算(C++)

    一.设计思路: 1.程序的主体部分是循环输出,次数即题目数目由用户输入: 2.三个整型变量+rand函数来实现随机数四则运算,一个变量代表加减乘除,另外两个用作运算数: 3.用户体验:题目分三列,排列 ...

  10. Spring事务总结

    事务是什么? 事务就是用来解决类似问题,事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败,那么事务就会回滚到最开始的状态,仿佛什么都没有发生过.在企业级应 ...