將 GlassFish 應用程式部署到碼頭平台:Amazon Linux 2023 的遷移路徑 - AWS Elastic Beanstalk

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

將 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 應用程式部署至 Elastic Beanstalk 環境。

我們示範了兩種建立 Docker 影像的方法:

  • 簡單 — 提供您的 GlassFish 應用程式原始程式碼,讓 Elastic Beanstalk 建置並執行 Docker 映像檔,做為佈建環境的一部分。這很容易設定,但需要增加執行個體佈建時間。

  • 進階 – 建置包含應用程式程式碼和相依性的自訂 Docker 影像,並提供它以在您的環境中使用 Elastic Beanstalk。此方法較複雜,並會減少環境中執行個體的佈建時間。

必要條件

此教學課程假設您具備基本的 Elastic Beanstalk 操作、Elastic Beanstalk 命令列 (EB CLI) 及 Docker 知識。若您尚不了解,請依照 開始使用 Elastic Beanstalk 中的說明來啟動您的第一個 Elastic Beanstalk 環境。此教學課程使用 EB CLI,但您也可使用 Elastic Beanstalk 主控台來建立環境並上傳應用程式。

若要按照此教學課程操作,您還需有下列 Docker 元件:

  • 在本機上安裝的可用 Docker。如需詳細資訊,請參閱 Docker 文件網站上的取得 Docker

  • Docker Hub 的存取權限。您必須建立 Docker ID 才能存取 Docker Hub。如需詳細資訊,請參閱 Docker 文件網站上的共用應用程式

若要進一步了解在 Elastic Beanstalk 平台上設定 Docker 環境,請參閱同一章中的 Docker 組態

簡例:提供您的應用程式程式碼

這是部署 GlassFish 應用程式的簡單方法。您可以提供您的應用程式原始程式碼,以及本教學課程中所包含的 Dockerfile。Elastic Beanstalk 構建包含您的應用程序和軟件堆棧的 Docker 映像。 GlassFish 然後 Elastic Beanstalk 會在您的環境執行個體上執行映像。

這種方法的一個問題是,每當它為您的環境建立一個執行個體時,都會在本機 Elastic Beanstalk 建立 Docker 影像。映像組建會增加執行個體佈建時間。這種影響並不局限於初始環境建立作業 — 它發生於向外擴展動作期間。

使 GlassFish 用範例應用程式啟動環境
  1. 下載範例 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 日誌不感興趣,可以省略此文件。

  2. 設定您的本機目錄以部署到 Elastic Beanstalk。

    ~/glassfish-example$ eb init -p docker glassfish-example
  3. (選用) 使用 eb local run 於本機建置並執行您的容器。

    ~/glassfish-example$ eb local run --port 8080
    注意

    欲進一步了解 eb local 命令,請參閱 eb local。Windows 不支援該命令。或者,您可使用 docker builddocker run 命令來建置並執行您的容器。如需詳細資訊,請參閱 Docker 文件

  4. (選用) 在您的容器執行時,使用 eb local open 命令在 Web 瀏覽器檢視您的應用程式。或者,在 Web 瀏覽器中開啟 http://localhost:8080/

    ~/glassfish-example$ eb local open
  5. 使用 eb create 來建立環境並部署您的應用程式。

    ~/glassfish-example$ eb create glassfish-example-env
  6. 環境啟動後,請使用 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 映像來啟動環境
  1. 如上一個簡例所示,下載並展開簡例docker-glassfish-al2-v1.zip。如果您已經完成該範例,則可以使用您已經擁有的目錄。

  2. 建立一個 Docker 影像並將其推送到 Docker Hub。在 docker-id 輸入您的 Docker ID,登入 Docker Hub。

    ~/glassfish-example$ docker build -t docker-id/beanstalk-glassfish-example:latest . ~/glassfish-example$ docker push docker-id/beanstalk-glassfish-example:latest
    注意

    推送映像前,可能需要執行 docker login。如果您執行不含參數的命令,系統會提示您輸入 Docker Hub 憑證。

  3. 建立其他目錄。

    ~$ mkdir glassfish-prebuilt ~$ cd glassfish-prebuilt
  4. 將下列範例複製到名為 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" }
  5. 設定您的本機目錄以部署到 Elastic Beanstalk。

    ~/glassfish-prebuilt$ eb init -p docker glassfish-prebuilt$
  6. (選擇性) 使用 eb local run 命令在本機執行容器。

    ~/glassfish-prebuilt$ eb local run --port 8080
  7. (選用) 在您的容器執行時,使用 eb local open 命令在 Web 瀏覽器檢視您的應用程式。或者,在 Web 瀏覽器中開啟 http://localhost:8080/

    ~/glassfish-prebuilt$ eb local open
  8. 使用此 eb create 命令建立環境並部署 Docker 影像。

    ~/glassfish-prebuilt$ eb create glassfish-prebuilt-env
  9. 環境啟動後,請使用 eb open 命令在網頁瀏覽器中檢視該命令。

    ~/glassfish-prebuilt$ eb open

當您完成使用該範例時,終止環境並刪除相關資源。

~/glassfish-prebuilt$ eb terminate --all