使用 Procfile 配置应用程序进程 - AWS Elastic Beanstalk

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Procfile 配置应用程序进程

如果您的应用程序源包根目录中有多个 JAR 文件,则必须包括 Procfile 文件来告知 Elastic Beanstalk 运行哪个或哪些 JAR。也可以为单 JAR 应用程序提供 Procfile 文件,以配置运行您的应用程序的 Java 虚拟机 (JVM)。

我们建议您始终在源包中将 Procfile 与应用程序一起提供。通过这种方式,您可以精确控制 Elastic Beanstalk 为您的应用程序运行的进程以及这些进程接收的参数。

有关编写和使用 Procfile 的详细信息,请展开扩展 Elastic Beanstalk Linux 平台中的 Buildfile 和 Procfile 部分 。

例 Procfile
web: java -Xms256m -jar server.jar cache: java -jar mycache.jar web_foo: java -jar other.jar

运行应用程序中的主 JAR 的命令必须命名为 web,而且必须是 Procfile 中列出的第一条命令。nginx 服务器将它从您的环境的负载均衡器接收到的所有 HTTP 请求都转发给此应用程序。

Elastic Beanstalk 假定 Procfile 中的所有条目应始终运行,并自动重新启动 Procfile 中定义的任何终止的应用程序。要运行将会终止并且不应重新启动的命令,请使用 Buildfile

如果您的 Elastic Beanstalk Java SE 环境使用 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前),请阅读本节中的其他信息。

注意

默认情况下,Elastic Beanstalk 将 nginx 代理配置为通过端口 5000 向您的应用程序转发请求。您可以覆盖默认端口,方法是将 PORT 环境属性设置为主应用程序侦听的端口。

如果您使用 Procfile 运行多个应用程序,则 Amazon Linux AMI 平台版本上的 Elastic Beanstalk 预计每个额外的应用程序都侦听编号比上一个高 100 的端口。Elastic Beanstalk 将可从每个应用程序内访问的 PORT 变量设置为它预计该应用程序运行时使用的端口。您可以通过在应用程序代码中调用 System.getenv("PORT") 访问此变量。

在上面的 Procfile 示例中,web 应用程序侦听端口 5000,cache 侦听端口 5100,而 web_foo 侦听端口 5200。web 通过读取 PORT 变量配置其侦听端口,并在该端口号的基础上加 100 来确定 cache 侦听的端口,从而能够发送其请求。