使用 Procfile 設定應用程式程序 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Procfile 設定應用程式程序

如果您的應用程式來源服務包的根目錄中有多個JAR檔案,則必須包含一個Procfile檔案,告知 Elastic Beanstalk 要執JAR行哪些檔案。您也可以包含單一JAR應用程式的Procfile檔案,以設定執行應用程式的 Java 虛擬機器 (JVM)。

建議務必在原始碼套件和應用程式中,一併提供 Procfile。如此一來,就能精確掌控 Elastic Beanstalk 會針對應用程式執行哪些程序,以及這些程序會收到哪些引數。

如需撰寫和使用的詳細資訊,Procfile請參閱Buildfile 和 Procfile

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

在應用程式JAR中執行 main 的命令必須呼叫web,而且它必須是Procfile. nginx 服務器將從環境的負載平衡器收到的所有HTTP請求轉發到此應用程序。

Elastic Beanstalk 假設 Procfile 的所有項目應隨時執行,並自動重新啟動 Procfile 中定義的所有已終止的應用程式。欲執行將終止且不重新啟動的命令,請使用 Buildfile

如果您的 Elastic Beanstalk Java SE 環境使用 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前),請閱讀本節中的其他信息。

備註

Elastic Beanstalk 預設會設定 nginx 代理將請求轉送至連接埠 5000 上的應用程式。您可將 PORT 環境屬性設定為主要應用程式接聽的連接埠,藉此覆寫預設連接埠。

如果您使用 a 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 接聽的連接埠,從而向其傳送請求。