如何将Play!框架应用部署到Openshift v3?

3
也许我提出这个问题有点早,因为Openshift v3仍处于预览阶段,但是我可能没有看到我的问题的解决方案:)。
我正在尝试构建一个Java Play框架应用程序,并选择Openshift作为我的托管平台。当他们发布v3预览版并通知v2最终会消失时,我刚刚能够在Openshift v2上让我的应用程序+mysql数据库工作。
在新的图像/模板中,仍然没有显示Java Play版本,也没有“自己动手”的方式。
任何提示或“教程”链接都将不胜感激:)。
谢谢和问候! Erik
2个回答

2
您有两个选项。
SBT本地打包器
首选项是使用SBT本地打包器SBT构建程序来创建Docker镜像(手动或使用类似Jenkins的工具)。开箱即用,您应该能够运行`sbt docker:publishLocal`并获得一个本地的Docker镜像,然后将其推送到Docker仓库。然后,您可以使用`oc new-app /:`在OpenShift中启动它。
缺点是您没有充分利用OpenShift,因为您的镜像是在其他地方构建的。但它可能非常适合您当前的开发流程。
优点是您的Docker镜像将非常小。 SBT很好地打包了所有依赖项。
源到映像
第二个选择是创建自己的图像源代码构建器,它知道如何构建sbt/play项目。这是我团队采取的路径。您可以参考我们的sbt构建器,但其质量最多仍处于测试版。
这种过程的缺点是所有源都包含在映像中,因此它会变得更大。此外,没有人支持此构建器,因此如果出现错误,则需要自行解决。
优点是OpenShift将构建您的映像,并且您将在OpenShift Web控制台内看到构建状态。
注:
使用OpenShift Origin 1.3.0,您还将获得Jenkins管道的访问权限。这可以使上述两种情况之一更容易。您最终将获得一个很酷的Web界面,看起来像这样:

OpenShift Build Pipeline Screenshot

希望 RedHat 在某个时候能够原生支持 sbt,但现在这两种流程中的任何一种都应该适用于您。

嗨Patrick,谢谢你的回复。我刚刚尝试在我的w10虚拟机中安装docker,但失败了。下一步我将尝试"源到映像"的方法。由于我完全是新手,请问您能否给我快速的逐步获取OpenShift(在线)上源代码的方法?我猜肯定有通过git的方式?谢谢! - Erik V.
要开始,您需要从https://github.com/openshift/origin/releases/tag/v1.3.0安装二进制文件,然后运行`oc cluster up`。您不需要任何源代码。 - Patrick Tescher
“oc cluster up” 命令似乎也需要在本地安装 Docker(但我无法在虚拟机环境中执行此操作)?我得到了以下输出: $ oc cluster up -- 检查 OpenShift 客户端... OK -- 检查 Docker 客户端... FAIL 错误:无法与 Docker 通信 我以为我的代码可以通过将其推送到具有指向 Openshift 项目的 Webhook 的 git 存储库来进行“docker 化”?但是现在我理解,我认为我需要在 Openshift 上获取一个基本的 docker 映像,然后可以将代码推送到其中? - Erik V.
正确的做法是先设置OpenShift。具体的指令可以参考这里:https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md - Patrick Tescher
嗨,我终于成功创建了自己的Docker镜像。我需要一个新的虚拟机来安装Docker工具箱,然后我一直在尝试制作自己的Dockerfile,最终得到了一个2.3GB大小的镜像... :-O。然后我尝试使用sbt本地打包器(activator docker:publishLocal),最终得到了一个333MB的镜像,太棒了。我又获得了一个OpenShift在线账户,今天我能够从上传到Docker Hub的镜像开始一个新项目。结果:Pod无法启动。我需要为本地打包的镜像进行额外的设置才能运行吗? - Erik V.

1
对于每个寻找答案的人,这是我在Openshift(自己安装)上运行Play应用程序的方法。 首先,非常感谢@PatrickTescher。他的答案指引了我正确的方向。
我还没有成功地在Openshift中使用activator进行docker构建(猜测与以root身份运行有关),但我已经让自己的Openshift集群上运行源到图像构建。目前,在线开发者预览版的Openshift还不支持此方法。根据我迄今为止所阅读的所有内容,我同意Patrick的说法,认为这是最佳方法。
通过深入以下链接,您应该可以开始运行:

在最后一个链接中,您可以通过registry.centos.org/centos/centos:latest替换registry.access.redhat.com/rhel7.2(rhel需要认证,而centos是免费社区等效)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接