本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Elastic Beanstalk 上的預先配置 Doc GlassFish ker 容器
注意
2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon LinuxAMI()AL1的所有平台分支的狀態設置為已退休。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2。
不再支援在 Amazon Linux AMI (AL1) 上執行的預先設定的泊塢視窗 GlassFish 平台分支。若要將您的 GlassFish 應用程式遷移到受支援的 Amazon Linux 2023 平台,請將您的應用程式程式碼部署 GlassFish 到 Amazon 2023 泊塢視窗映像。如需詳細資訊,請參閱下列主題,將 GlassFish 應用程式部署到碼頭平台:Amazon Linux 2023 的遷移路徑。
本章節說明如何於本機開發範例應用程式,然後使用預先設定的 Docker 容器將應用程式部署至 Elastic Beanstalk。
設定您的本機開發環境
對於這個演練,我們使用一個 GlassFish 示例應用程序。
設定您的環境。
-
建立新的範例應用程式資料夾。
~$
mkdir eb-preconf-example
~$cd eb-preconf-example
-
下載範例應用程式程式碼到該新資料夾。
~$
wget https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-v1.zip
~$unzip docker-glassfish-v1.zip
~$rm docker-glassfish-v1.zip
本機開發與測試
開發範例應 GlassFish 用程式
-
將
Dockerfile
新增至應用程式的根資料夾。在檔案中,指定要用來執行本機預先設定 AWS Elastic Beanstalk Docker 容器的 Docker 基礎映像檔。您稍後會將應用程式部署到 Elastic Beanstalk 預先設定的 D GlassFish ocker 平台版本。選擇此平台版本使用的 Docker 基本映像。如需有關該平台版本最新 Docker 映像檔的詳細資訊,請參閱《AWS Elastic Beanstalk 平台指南》中支援AWS Elastic Beanstalk 的平台頁面的預先設定的 Docker 一節。範例 〜 /E/碼頭文b-preconf-example件
# For Glassfish 5.0 Java 8 FROM amazon/aws-eb-glassfish:5.0-al-onbuild-2.11.1
如需使用
Dockerfile
的詳細資訊,請參閱 準備 Docker 映像以部署至 Elastic Beanstalk。 -
建置 Docker 影像。
~/eb-preconf-example$
docker build -t my-app-image .
-
自映像執行 Docker 容器。
注意
您必須納入
-p
旗標將容器上的連接埠 8080 對應至 localhost 連接埠 3000。Elastic Beanstalk Docker 容器永遠會公開容器上連接埠 8080 的應用程式。-it
旗標會將映像做為互動式程序來執行。容器結束時,--rm
旗標會清除容器檔案系統。您可以選擇是否加入-d
旗標將映像做為協助程式來執行。$
docker run -it --rm -p 3000:8080 my-app-image
-
要查看示例應用程序,請在 Web 瀏覽器中鍵URL入以下內容。
http://localhost:3000
部署到 Elastic Beanstalk
測試應用程式後,即可準備將其部署至 Elastic Beanstalk。
將您的應用程式部署至 Elastic Beanstalk
-
在應用程式的根資料夾中,將
Dockerfile
重新命名為Dockerfile.local
。Elastic Beanstalk 需要執行此步驟,才能使用包含 Elastic Beanstalk 正確說明的,在 Elastic Beanstalk 環境中的每個 Amazon EC2 實例上構建自定義碼頭圖像。Dockerfile
注意
若您的
Dockerfile
中包含修改平台版本基礎 Docker 影像的指示,則不需要執行此步驟。若您的Dockerfile
內僅有一行Dockerfile
來指定應從中建立容器的基礎映像,則完全無須使用FROM
。在此情況下,Dockerfile
為多餘的。 -
建立應用程式原始碼套件。
~/eb-preconf-example$
zip myapp.zip -r *
-
針對 Platform (平台),請在 Preconfigured Docker (預先設定的 Docker) 下,選擇 Glassfish。
-
針對 Application code (應用程式程式碼),選擇 Upload your code (上傳您的程式碼),然後選擇 Upload (上傳)。
-
選擇 Local file (本機檔案),選擇 Browse (瀏覽),然後開啟您剛才建立的應用程式原始碼套件。
-
選擇上傳。
-
選擇 Review and launch (檢閱和啟動)。
-
檢閱可用的設定,然後選擇 Create app (建立應用程式)。
-
在環境建立後,您可以查看部署的應用程式。選擇顯URL示在主控台儀表板頂端的環境。
將 GlassFish 應用程式部署到碼頭平台:Amazon Linux 2023 的遷移路徑
本教學的目標是為使用預先設定的泊塢視窗 GlassFish 平台 (以 Amazon Linux 為基礎AMI) 的客戶提供 Amazon Linux 2023 的遷移路徑。您可以將 GlassFish 應用程式程式碼部署 GlassFish 到 Amazon 2023 泊塢視窗映像,將應用程式移轉到 Amazon Linux 2023。
本教學課程將逐步引導您使用 AWS Elastic Beanstalk Docker 平台,將以 Java EE 應用程式伺服器為基礎的 GlassFish 應
我們示範了兩種建立 Docker 影像的方法:
-
簡單 — 提供您的 GlassFish 應用程式原始程式碼,讓 Elastic Beanstalk 建置並執行 Docker 映像檔,做為佈建環境的一部分。這很容易設定,但需要增加執行個體佈建時間。
-
進階 – 建置包含應用程式程式碼和相依性的自訂 Docker 影像,並提供它以在您的環境中使用 Elastic Beanstalk。此方法較複雜,並會減少環境中執行個體的佈建時間。
必要條件
本教學課程假設您對 Elastic Beanstalk 作業、Elastic Beanstalk 命令列介面 (EBCLI) 和泊塢視窗有一些了解。若您尚不了解,請依照 Elastic Beanstalk 入門 中的說明來啟動您的第一個 Elastic Beanstalk 環境。本教學課程使用 EB CLI,但您也可以使用 Elastic Beanstalk 主控台來建立環境和上傳應用程式。
若要按照此教學課程操作,您還需有下列 Docker 元件:
若要進一步了解在 Elastic Beanstalk 平台上設定 Docker 環境,請參閱同一章中的 準備 Docker 映像以部署至 Elastic Beanstalk。
簡例:提供您的應用程式程式碼
這是部署 GlassFish 應用程式的簡單方法。您可以提供您的應用程式原始程式碼,以及本教學課程中所包含的 Dockerfile
。Elastic Beanstalk 構建包含您的應用程序和軟件堆棧的 Docker 映像。 GlassFish 然後 Elastic Beanstalk 會在您的環境執行個體上執行映像。
這種方法的一個問題是,每當它為您的環境建立一個執行個體時,都會在本機 Elastic Beanstalk 建立 Docker 影像。映像組建會增加執行個體佈建時間。這種影響並不局限於初始環境建立作業 — 它發生於向外擴展動作期間。
使 GlassFish 用範例應用程式啟動環境
-
下載範例
docker-glassfish-al2-v1.zip
,然後將.zip
檔案展開至開發環境中的目錄。~$
curl https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-glassfish-al2-v1.zip --output docker-glassfish-al2-v1.zip
~$mkdir glassfish-example
~$cd glassfish-example
~/glassfish-example$unzip ../docker-glassfish-al2-v1.zip
您的目錄結構應如下所示。
~/glassfish-example |-- Dockerfile |-- Dockerrun.aws.json |-- glassfish-start.sh |-- index.jsp |-- META-INF | |-- LICENSE.txt | |-- MANIFEST.MF | `-- NOTICE.txt |-- robots.txt `-- WEB-INF `-- web.xml
下列檔案是在您的環境中建置和執行 Docker 容器的關鍵:
-
Dockerfile
– 提供 Docker 用來建置具有應用程式和必要相依性的映像的指示。 -
glassfish-start.sh
– 系統會執行 Docker 影像以啟動應用程式的 shell 指令碼。 -
Dockerrun.aws.json
— 提供記錄金鑰,以將 GlassFish 應用程式伺服器記錄包含在記錄檔要求中。如果您對 GlassFish 日誌不感興趣,可以省略此文件。
-
-
設定您的本機目錄以部署到 Elastic Beanstalk。
~/glassfish-example$
eb init -p docker
glassfish-example
-
(選用) 使用 eb local run 於本機建置並執行您的容器。
~/glassfish-example$
eb local run --port 8080
-
(選用) 在您的容器執行時,使用 eb local open 命令在 Web 瀏覽器檢視您的應用程式。或者,在 Web 瀏覽器中開啟 http://localhost:8080/
。 ~/glassfish-example$
eb local open
-
使用 eb create 來建立環境並部署您的應用程式。
~/glassfish-example$
eb create
glassfish-example-env
-
環境啟動後,請使用 eb open 命令在網頁瀏覽器中檢視該命令。
~/glassfish-example$
eb open
當您完成使用該範例時,終止環境並刪除相關資源。
~/glassfish-example$
eb terminate --all
進階範例:提供預先建置的 Docker 影像
這是部署應用程式的更進階方 GlassFish 式。基於第一個示例,您創建包含應用程序代碼和 GlassFish 軟件堆棧的 Docker 映像,並將其推送到 Docker Hub。完成此一次性步驟之後,您可以根據自訂映像啟動 Elastic Beanstalk 環境。
當您啟動環境並提供 Docker 影像時,環境中的執行個體會直接下載並使用此映像,而不需要建置 Docker 影像。因此,執行個體佈建時間會減少。
備註
下列步驟會建立可公開取得的 Docker 影像。
您會使用本機上所安裝 Docker 的 Docker 命令,以及您的 Docker Hub 憑證。如需詳細資訊,請參閱本主題中前面的先決條件一節。
使用預先建置的 GlassFish 應用程式 Docker 映像來啟動環境
-
如上一個簡例所示,下載並展開簡例
docker-glassfish-al2-v1.zip
。如果您已經完成該範例,則可以使用您已經擁有的目錄。 -
建立一個 Docker 影像並將其推送到 Docker Hub。輸入您的泊塢視窗 ID
docker-id
登錄到碼頭中心。~/glassfish-example$
docker build -t
~/glassfish-example$docker-id
/beanstalk-glassfish-example:latest .docker push
docker-id
/beanstalk-glassfish-example:latest注意
推送映像前,可能需要執行 docker login。如果您執行不含參數的命令,系統會提示您輸入 Docker Hub 憑證。
-
建立其他目錄。
~$
mkdir glassfish-prebuilt
~$cd glassfish-prebuilt
-
將下列範例複製到名為
Dockerrun.aws.json
的檔案中。範例
~/glassfish-prebuilt/Dockerrun.aws.json
{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "
docker-username
/beanstalk-glassfish-example" }, "Ports": [ { "ContainerPort": 8080, "HostPort": 8080 } ], "Logging": "/usr/local/glassfish5/glassfish/domains/domain1/logs" } -
設定您的本機目錄以部署到 Elastic Beanstalk。
~/glassfish-prebuilt$
eb init -p docker
glassfish-prebuilt$
-
(選擇性) 使用 eb local run 命令在本機執行容器。
~/glassfish-prebuilt$
eb local run --port 8080
-
(選用) 在您的容器執行時,使用 eb local open 命令在 Web 瀏覽器檢視您的應用程式。或者,在 Web 瀏覽器中開啟 http://localhost:8080/
。 ~/glassfish-prebuilt$
eb local open
-
使用此 eb create 命令建立環境並部署 Docker 影像。
~/glassfish-prebuilt$
eb create
glassfish-prebuilt-env
-
環境啟動後,請使用 eb open 命令在網頁瀏覽器中檢視該命令。
~/glassfish-prebuilt$
eb open
當您完成使用該範例時,終止環境並刪除相關資源。
~/glassfish-prebuilt$
eb terminate --all