Elastic Beanstalk 上的預先配置 Doc GlassFish ker 容器 - AWS Elastic Beanstalk

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

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 示例應用程序。

設定您的環境。
  1. 建立新的範例應用程式資料夾。

    ~$ mkdir eb-preconf-example ~$ cd eb-preconf-example
  2. 下載範例應用程式程式碼到該新資料夾。

    ~$ 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 用程式
  1. 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

  2. 建置 Docker 影像。

    ~/eb-preconf-example$ docker build -t my-app-image .
  3. 自映像執行 Docker 容器。

    注意

    您必須納入 -p 旗標將容器上的連接埠 8080 對應至 localhost 連接埠 3000。Elastic Beanstalk Docker 容器永遠會公開容器上連接埠 8080 的應用程式。-it 旗標會將映像做為互動式程序來執行。容器結束時,--rm 旗標會清除容器檔案系統。您可以選擇是否加入 -d 旗標將映像做為協助程式來執行。

    $ docker run -it --rm -p 3000:8080 my-app-image
  4. 要查看示例應用程序,請在 Web 瀏覽器中鍵URL入以下內容。

    http://localhost:3000
    在 Web 瀏覽器中顯示的示 GlassFish 例應用程序

部署到 Elastic Beanstalk

測試應用程式後,即可準備將其部署至 Elastic Beanstalk。

將您的應用程式部署至 Elastic Beanstalk
  1. 在應用程式的根資料夾中,將 Dockerfile 重新命名為 Dockerfile.local。Elastic Beanstalk 需要執行此步驟,才能使用包含 Elastic Beanstalk 正確說明的,在 Elastic Beanstalk 環境中的每個 Amazon EC2 實例上構建自定義碼頭圖像。Dockerfile

    注意

    若您的 Dockerfile 中包含修改平台版本基礎 Docker 影像的指示,則不需要執行此步驟。若您的 Dockerfile 內僅有一行 Dockerfile 來指定應從中建立容器的基礎映像,則完全無須使用 FROM。在此情況下,Dockerfile 為多餘的。

  2. 建立應用程式原始碼套件。

    ~/eb-preconf-example$ zip myapp.zip -r *
  3. 使用此預先配置的鏈接打開 Elastic Beanstalk 控制台:控制台。newApplication applicationName= 教程 & = environmentType LoadBalanced

  4. 針對 Platform (平台),請在 Preconfigured Docker (預先設定的 Docker) 下,選擇 Glassfish

  5. 針對 Application code (應用程式程式碼),選擇 Upload your code (上傳您的程式碼),然後選擇 Upload (上傳)

  6. 選擇 Local file (本機檔案),選擇 Browse (瀏覽),然後開啟您剛才建立的應用程式原始碼套件。

  7. 選擇上傳

  8. 選擇 Review and launch (檢閱和啟動)

  9. 檢閱可用的設定,然後選擇 Create app (建立應用程式)

  10. 在環境建立後,您可以查看部署的應用程式。選擇顯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 應用程式部署至 Elastic Beanstalk 環境。

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

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

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

必要條件

本教學課程假設您對 Elastic Beanstalk 作業、Elastic Beanstalk 命令列介面 (EBCLI) 和泊塢視窗有一些了解。若您尚不了解,請依照 Elastic Beanstalk 入門 中的說明來啟動您的第一個 Elastic Beanstalk 環境。本教學課程使用 EB CLI,但您也可以使用 Elastic Beanstalk 主控台來建立環境和上傳應用程式。

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

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

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

若要進一步了解在 Elastic Beanstalk 平台上設定 Docker 環境,請參閱同一章中的 準備 Docker 映像以部署至 Elastic Beanstalk

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

這是部署 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。輸入您的泊塢視窗 ID docker-id 登錄到碼頭中心。

    ~/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