我正在考虑将经过本地测试的其余api部署到云的过程应该如何,可以说像亚马逊这样的基础设施即服务(而不是像Heroku这样的平台即服务)。
我已经设置并运行了sbt本地本地环境,但是我的问题是我应该如何在生产环境中部署它呢?
定义devops从git repo中提取最新更改然后简单执行sbt run的过程是否明智?
我想知道使用scala + spray + sbt的团队如何将其api部署到生产环境。
最佳答案
我们的服务核心是scala + akka + spray + mongo。因此,我们使用GitHub进行版本控制。将已检查的PR合并到master分支后,Jenkins自动测试“n”构建项目。如果所有测试都成功,那么詹金将运行几个脚本:
基本上,在第三步中,您有两种选择:
使用IO / Spray引导文件制作一个可运行的jar:
object Boot extends App {
implicit val system = ActorSystem("ServiceName")
val log = system.log
val service = system.actorOf(Props[Service], name="serviceActor")
IO(Http) ! Http.Bind(service, interface = host, port = port)
}
制作一个可运行的jar作为Akka的微内核:
在这种情况下,您应该扩展Bootable trait并覆盖
startup
和shutdown
方法:class Kernel extends Bootable {
// many lines of code
def startup() {
scheduler.start()
SomeActorSystem.startup()
}
def shutdown() {
scheduler.shutdown()
SomeActorSystem.shutdown()
system.shutdown()
}
}
使用TypeSafe起始脚本:
无法显示示例,但是它对github =有很好的介绍
我们在不同情况下都使用了所有这种方式。
关于scala - 如何将我的Spray API部署到生产中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396796/