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

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

使用 Procfile 配置应用程序进程

要指定用于启动 Go 应用程序的自定义命令,请在源包根目录中包含一个名为 Procfile 的文件。

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

例 Procfile
web: bin/server queue_process: bin/queue_processor foo: bin/fooapp

您必须调用主应用程序 web,并在 Procfile 中将其列为第一个命令。Elastic Beanstalk 在环境的根 URL 上公开主 web 应用程序;例如,http://my-go-env.elasticbeanstalk.com

Elastic Beanstalk 还会运行名称没有 web_ 前缀的任何应用程序,但这些应用程序在您的实例外部不可用。

Elastic Beanstalk 希望从 Procfile 运行的进程一直运行。Elastic Beanstalk 会监控这些应用程序并重启所有终止的进程。对于短期运行的进程,请使用 Buildfile 命令。

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

注意
注意

本主题中的信息仅适用于基于 Amazon Linux AMI (AL1) 的平台分支。AL2023/AL2 平台分支与以前的 Amazon Linux AMI(AL1)平台版本不兼容,需要不同的配置设置

Elastic Beanstalk 配置 nginx 代理,使其在应用程序的 PORT 环境属性中指定的端口号上转发对应用程序的请求。您的应用程序应始终侦听该端口。您可以通过在应用程序中调用 os.Getenv("PORT") 方法访问此变量。

Elastic Beanstalk 使用 PORT 环境属性中指定的端口号作为 Procfile 中第一个应用程序的端口,然后对 Procfile 中的每个后续应用程序的端口号递增 100。如果未设置 PORT 环境属性,则 Elastic Beanstalk 使用 5000 作为初始端口。

在前面的示例中,web 应用程序的 PORT 环境属性为 5000,queue_process 应用程序使用 5100,foo 应用程序使用 5200。

您可以通过 aws:elasticbeanstalk:application:environment 命名空间设置 PORT 选项从而指定初始端口,如下例所示。

option_settings: - namespace: aws:elasticbeanstalk:application:environment option_name: PORT value: <first_port_number>

有关为应用程序设置环境属性的更多信息,请参阅 选项设置