我可以在 Bluemix 上 运行 我的 Tomcat 应用程序吗?

Can I run my Tomcat app on Bluemix?

我们有一个在 tomcat7 上运行的简单应用程序,已经运行了大约一年。我们计划在 Bluemix 上试一试,我们想知道是否有任何信息可以帮助我们完成这项工作。我看到 post 讨论了将应用程序从 WebSphere Application Server v7 迁移到 Liberty 配置文件,但我没有看到任何对 Tomcat 的引用。如果您能提供任何文档或示例,我们将不胜感激。

是的。您可以使用社区 Java buildpack 来使用 Tomcat 作为您的 Java 运行时。

cf push -b https://github.com/cloudfoundry/java-buildpack.git

编辑:

cf push <appname> -b java_buildpack

Tomcat 构建包的文档:https://github.com/cloudfoundry/java-buildpack

-b选项后的预装buildpack名称或外部url为开源javaTomcatbuildpack。推送 Java 应用程序时,如果您未指定 buildpack 名称或 url,将选择默认的 Java buildpack。在 Bluemix 中,默认的构建包是 WebSphere Liberty 构建包。

Liberty buildpack 文档:https://www.ng.bluemix.net/docs/#starters/liberty/index.html#optionsforpushinglibertyapplications

是的,您可以 运行 您在 Bluemix 上的应用程序,但是,由于配置信息散布在 xml 上几个不同的 xml 文件(想到服务器、内容和网络)中 Tomcat,我建议你采取交错的方法来移动你的应用程序。 您首先需要让您的应用程序在 WebSphere Application Server V8.5.5 Liberty Profile 上运行,然后您可以将服务器包推送到 Bluemix。

基本上,您想执行以下操作:

1) 使用 WebSphere Application Server Migration Toolkit - Competitive Migration[=29] 将您的 Tomcat 应用程序和服务器配置迁移到 Liberty 配置文件=].以下文章详细介绍了该工具的使用方法:

http://www.ibm.com/developerworks/websphere/downloads/migtoolkit/compmig.html

2) 在 Liberty Profile 上测试您的应用程序

3) 将 Liberty Server 包推送到 bluemix。我发现下面的文章对推送服务器包很有用:

https://developer.ibm.com/bluemix/2015/01/06/modify-liberty-server-xml-configurations-ibm-bluemix/#

我推荐以下命令:

cf push <appname> -b java_buildpack

这将使用 Bluemix 中的内置 Java buildpack。这种方法的好处是您始终获得与 Bluemix 中当前 CloudFoundry 级别相匹配的 java buildpack 版本。如果您使用外部 git master,它可能会或可能不会。

正如其他人所解释的那样,Bluemix 包括 java_buildpack buildpack,其中包括 Tomcat。要使用它在使用此构建包的 Bluemix 中创建 运行time,运行 此命令:

cf push <appname> -b java_buildpack -p <apparchive>

您可能想知道:这个 buildpack 是什么,它在做什么?

您可以看到 Bluemix 中可用的构建包列表。 运行 这个命令:

cf buildpacks

输出(截至今天)是:

Getting buildpacks...

buildpack                              position   enabled   locked   filename
liberty-for-java                       1          true      false    buildpack_liberty-for-java_v1.18-20150519-1642-yp.zip
sdk-for-nodejs                         2          true      false    buildpack_sdk-for-nodejs_v1.18-20150519-1759-yp.zip
noop-buildpack                         3          true      false    noop-buildpack-20140311-1519.zip
java_buildpack                         4          true      false    java-buildpack-v2.7.1.zip
ruby_buildpack                         5          true      false    ruby_buildpack-cached-v1.3.0.zip
nodejs_buildpack                       6          true      false    nodejs_buildpack-cached-v1.2.0.zip
go_buildpack                           7          true      false    go_buildpack-cached-v1.2.0.zip
python_buildpack                       8          true      false    python_buildpack-cached-v1.2.0.zip
php_buildpack                          9          true      false    php_buildpack-offline-v3.1.0.zip
aspnet5-experimental                   10         true      false    buildpack_aspnet5-experimental_v0.1.5-20150508-1205.zip
liberty-for-java_v1-17-20150501-1729   11         true      false    buildpack_liberty-for-java_v1.17-20150501-1729-yp.zip
sdk-for-nodejs_v1-17-1-20150519-0951   12         true      false    buildpack_sdk-for-nodejs_v1.17.1-20150519-0951-yp.zip

如您所见,java_buildpack 构建包由 java-buildpack-v2.7.1.zip 实现。 Java Buildpack v2.7.1 中记录了这一点。如文档所示,buildpack 包括 Tomcat v8.0.20.

您还可以看到创建 Liberty for Java runtime in Bluemix, is implemented by buildpack_liberty-for-java_v1.18-20150519-1642-yp.zip, which is v1.18 of the buildpack. If you need the previous release, you can use the liberty-for-java_v1-17-20150501-1729 buildpack, which is v1.17 of the buildpack. Options for pushing Liberty applicationsliberty-for-java buildpack 解释了如何使用 buildpack。

您还可以查看 Node.js (nodejs_buildpack)、PHP (php_buildpack) 等的构建包。甚至还有 ASP.NET 5 (aspnet5-experimental) 的构建包。