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

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

使用 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>

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