【问题标题】:WAR Deployment in OpenShiftOpenShift 中的 WAR 部署
【发布时间】:2017-12-23 14:29:40
【问题描述】:

我有一个 Java .war 文件,我需要使用 mysql DB 来托管它。 任何人都可以帮助在 OpenShift 中托管它的确切程序吗? 以及如何建立从应用到数据库的连接?

【问题讨论】:

  • 你是如何构建它的?马文?
  • 您使用的是哪个版本的openshift,它在哪里运行(例如Openshift.com)?
  • 请参阅stackoverflow.com/a/47821903/329496,其中指出如果您使用 openshift 模板将 mysql 添加到项目中,那么 openshift 会将 mysql 服务添加到内部 DNS 并且您的 java 应用程序应该能够使用连接在 openshift Web 控制台上为 mysql 服务显示的内部 DNS 名称和端口。
  • 在 Maven 中构建尝试在 openshift.com 中部署其版本 2
  • Openshift V2?已经倒闭了?

标签: java mysql openshift war


【解决方案1】:

假设您使用 Maven 构建应用程序并在 OpenShift Online 上运行它,那么您可以使用内置的 Java 模板。使用“添加到项目”并选择“Java”并选择“打开 JDK”。它要求您输入代码的名称和 git url。您应该首先使用它建议的 git url 来查看他们的示例代码是如何由 maven 构建并在 Openshift 上运行的。

如果您不喜欢他们的代码构建/运行方式,那么我编写了一个构建 WAR 的 Java 演示,然后告诉 Openshift 使用 tomcat7-maven-plugin 运行 WAR。 POM 文件有一个使用 tomcat7 运行 WAR 的“openshift”maven 配置文件,您可以看到 here。该配置文件在标准 Openshift OpenJDK 模板上默认启用。

在运行 Java 代码后,建议您将 MySQL 数据库部署为项目中的单独 pod/服务。这样,您就可以独立于数据库扩展 Java pod。您可以再次使用内置的 Openshift Online 模板。选择“添加到项目”、“数据存储”、“MySQL (Persistent)”并使用默认值。

最后一部分是如何将 Java 应用程序连接到数据库。在这里,您可以非常安全地使用 OpenShift。正如我们所见,here OpenShift 拥有发布任何服务 IP 的内部 DNS。当我运行 mysql 模板时,它被创建为服务“mysql”。然后在 DNS 中以<service>.<pod_namespace>.svc.cluster.local 的形式发布。 pod_namespace 是 openshift 项目。所以在我的例子中,我的演示代码 OpenShift 项目被称为 thinbus-srp-spring-demo,因此 Java pod 可以使用 DNS 名称 mysql.thinbus-srp-spring-demo.svc.cluster.local 连接到 mysql 服务。所以我可以将它配置为 JDBC 连接字符串中的数据库主机名。

这些说明是如何使用鼠标,并假设您使用的是安装了 OpanJDK 和 MySql 模板的 OpenShift 实例。你实际上不需要任何这些。您可以创建自己的具有整个解决方案的自定义模板。这是一个相当高级的话题,所以我不会在这个答案中讨论这个话题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多