使用 Procfile 配置应用程序进程 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 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 命令。

在 Amazon Linux AMI(在 Amazon Linux 2 之前)上使用 Procfile

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

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>

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