本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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 命令列 (EB CLI) 及 Docker 知識。若您尚不了解,請依照 開始使用 Elastic Beanstalk 中的說明來啟動您的第一個 Elastic Beanstalk 環境。此教學課程使用 EB CLI,但您也可使用 Elastic Beanstalk 主控台來建立環境並上傳應用程式。
若要按照此教學課程操作,您還需有下列 Docker 元件:
若要進一步了解在 Elastic Beanstalk 平台上設定 Docker 環境,請參閱同一章中的 Docker 組態。
簡例:提供您的應用程式程式碼
這是部署 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。在
docker-id
輸入您的 Docker ID,登入 Docker Hub。~/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