本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 之前),請閱讀本節中的其他信息。
備註
-
本主題中的資訊僅適用於以 Amazon Linux AMI (AL1) 為基礎的平台分支。AL2023/ AL2 平台分支機構與先前的 Amazon Linux AMI (AL1) 平台版本不相容,因此需要不同的組態設定。
-
2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon LinuxAMI()AL1的所有平台分支的狀態設置為已退休。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 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
接聽的連接埠,從而向其傳送請求。