Buildfile 和 Procfile - AWS Elastic Beanstalk

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

Buildfile 和 Procfile

某些平台允许您自定义如何构建或准备应用程序,并指定运行应用程序的进程。每个平台主题都特别提到 Buildfile 和/或 Procfile(如果平台支持)。在 Elastic Beanstalk 平台 下查找您的特定平台。

对于所有支持的平台,语法和语义是相同的,如本页所述。各个平台主题都提到了这些文件在以各自的语言构建和运行应用程序时的特定用法。

Buildfile

要为应用程序指定自定义构建和配置命令,请将名为 Buildfile 的文件放置在应用程序源的根目录中。文件名区分大小写。Buildfile 使用以下语法。

<process_name>: <command>

Buildfile 中的命令必须符合以下正则表达式:^[A-Za-z0-9_-]+:\s*[^\s].*$

Elastic Beanstalk 不会监控通过 Buildfile 运行的应用程序。对于短期运行并在完成任务后终止的命令,请使用 Buildfile。对于长期运行、不应退出的应用程序进程,请使用 Procfile

Buildfile 中的所有路径都是源包根目录的相对路径。在下面的 Buildfile 示例中,build.sh 是位于源包根目录的 Shell 脚本。

例 Buildfile
make: ./build.sh

如果您想提供自定义构建步骤,我们建议您将 predeploy 平台挂钩用于除最简单的命令之外的任何内容,而不是 Buildfile。通过平台挂钩可以使用更丰富的脚本,并且能更好地进行错误处理。平台挂钩将在下一节中介绍。

Procfile

要指定自定义命令以便启动和运行应用程序,请将名为 Procfile 的文件放置在应用程序源的根目录中。文件名区分大小写。Procfile 使用以下语法。您可以指定一个或多个命令。

<process_name1>: <command1> <process_name2>: <command2> ...

Procfile 中的每一行都必须符合以下正则表达式:^[A-Za-z0-9_-]+:\s*[^\s].*$

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

Procfile 中的所有路径都是源包根目录的相对路径。以下示例 Procfile 定义了三个进程。第一个进程在该示例中称为 web,它是主要 Web 应用程序

例 Procfile
web: bin/myserver cache: bin/mycache foo: bin/fooapp

Elastic Beanstalk 将代理服务器配置为将请求转发到端口 5000 上的主 Web 应用程序,并且您可以配置此端口号。Procfile 的常见用途是将此端口号作为命令参数传递给应用程序。有关代理配置的详细信息,请参阅 反向代理配置

Elastic Beanstalk 将 Procfile 进程的标准输出和错误流捕获到日志文件中。Elastic Beanstalk 根据进程名称命名日志文件并将其存储在 /var/log 中。例如,上例中的 web 进程分别为 web-1.logweb-1.error.log 生成名为 stdoutstderr 的日志。