在 Heroku 上部署多个模块 java 应用程序
Deploy multiple module java app on Heroku
我有一个包含两个模块的多模块 Maven 项目。每个模块都是一个 spring 休息服务 (@RestController)。我已经在本地主机上成功运行了服务,现在我想远程访问我的应用程序,所以我需要将模块发布到某个远程服务器。
我发现使用 Heroku 是一个很好的开始方式。我阅读了一些教程但没有完全理解一件事:我可以在一个 Heroku 应用程序中部署多个服务(如果可以,我需要如何配置我的 Procfile)或者我必须为我的应用程序的每个模块创建一个 Heroku 应用程序?或者有什么方法可以将多个模块打包到一个 war/ear 文件中并将其用于部署?
以防万一,有我的顶级pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nverapp</groupId>
<artifactId>nverapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>server</module>
<module>auth_server</module>
</modules>
UPD
所以我找到了这个例子 https://github.com/seeebiii/multi-module-heroku ,但我不明白应用程序服务器如何处理启动模块 ChildTwo
作为独立服务。有人可以解释这一刻吗?
您将需要创建两个应用程序,因为 Heroku 只允许每个应用程序使用一种网络进程类型。
您还需要使您的 Procfile 足够灵活以与这两个模块一起使用。为此,我建议将 JAR 文件名放在配置变量中,例如:
web: java -jar $JAR_FILE
您还可以使用 MAVEN_CUSTOM_OPTS 配置变量为每个应用程序设置 -pl
选项,以仅构建您需要的内容。
我有一个包含两个模块的多模块 Maven 项目。每个模块都是一个 spring 休息服务 (@RestController)。我已经在本地主机上成功运行了服务,现在我想远程访问我的应用程序,所以我需要将模块发布到某个远程服务器。
我发现使用 Heroku 是一个很好的开始方式。我阅读了一些教程但没有完全理解一件事:我可以在一个 Heroku 应用程序中部署多个服务(如果可以,我需要如何配置我的 Procfile)或者我必须为我的应用程序的每个模块创建一个 Heroku 应用程序?或者有什么方法可以将多个模块打包到一个 war/ear 文件中并将其用于部署?
以防万一,有我的顶级pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nverapp</groupId>
<artifactId>nverapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>server</module>
<module>auth_server</module>
</modules>
UPD
所以我找到了这个例子 https://github.com/seeebiii/multi-module-heroku ,但我不明白应用程序服务器如何处理启动模块 ChildTwo
作为独立服务。有人可以解释这一刻吗?
您将需要创建两个应用程序,因为 Heroku 只允许每个应用程序使用一种网络进程类型。
您还需要使您的 Procfile 足够灵活以与这两个模块一起使用。为此,我建议将 JAR 文件名放在配置变量中,例如:
web: java -jar $JAR_FILE
您还可以使用 MAVEN_CUSTOM_OPTS 配置变量为每个应用程序设置 -pl
选项,以仅构建您需要的内容。