QuickStart:將 Docker 應用程式部署到 Elastic Beanstalk - AWS Elastic Beanstalk

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

QuickStart:將 Docker 應用程式部署到 Elastic Beanstalk

本 QuickStart 教學課程將引導您完成建立 Docker 應用程式並將其部署到 AWS Elastic Beanstalk 環境的程序。

注意

本 QuickStart 自學課程主要用於示範目的。請勿將本教學課程中建立的應用程式用於生產流量。

您的 AWS 帳戶

如果您還不是 AWS 客戶,則需要創建一個 AWS 帳戶。註冊使您可以訪問 Elastic Beanstalk 和您需要的其他 AWS 服務。

如果您已經有 AWS 帳戶,則可以轉到必要條件

註冊一個 AWS 帳戶

如果您沒有 AWS 帳戶,請完成以下步驟來建立一個。

若要註冊成為 AWS 帳戶
  1. 開啟 https://portal.aws.amazon.com/billing/signup

  2. 請遵循線上指示進行。

    部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。

    當您註冊一個時 AWS 帳戶,將創建AWS 帳戶根使用者一個。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。安全性最佳做法是將管理存取權指派給使用者,並僅使用 root 使用者來執行需要 root 使用者存取權的工作。

AWS 註冊過程完成後,會向您發送確認電子郵件。您可以隨時登錄 https://aws.amazon.com/ 並選擇 我的帳戶,以檢視您目前的帳戶活動並管理帳戶。

建立具有管理權限的使用者

註冊後,請保護您的 AWS 帳戶 AWS 帳戶根使用者 AWS IAM Identity Center、啟用和建立系統管理使用者,這樣您就不會將 root 使用者用於日常工作。

保護您的 AWS 帳戶根使用者
  1. 選擇 Root 使用者並輸入您的 AWS 帳戶 電子郵件地址,以帳戶擁有者身分登入。AWS Management Console在下一頁中,輸入您的密碼。

    如需使用根使用者登入的說明,請參閱 AWS 登入 使用者指南中的以根使用者身分登入

  2. 若要在您的根使用者帳戶上啟用多重要素驗證 (MFA)。

    如需指示,請參閱《IAM 使用者指南》的為 AWS 帳戶 根使用者啟用虛擬 MFA 裝置 (主控台)

建立具有管理權限的使用者
  1. 啟用 IAM Identity Center。

    如需指示,請參閱 AWS IAM Identity Center 使用者指南中的啟用 AWS IAM Identity Center

  2. 在 IAM 身分中心中,將管理存取權授予使用者。

    若要取得有關使用 IAM Identity Center 目錄 做為身分識別來源的自學課程,請參閱《使用指南》 IAM Identity Center 目錄中的「以預設值設定使用AWS IAM Identity Center 者存取」。

以具有管理權限的使用者身分登入
指派存取權給其他使用者
  1. 在 IAM 身分中心中,建立遵循套用最低權限許可的最佳做法的權限集。

    如需指示,請參閱《AWS IAM Identity Center 使用指南》中的「建立權限集」。

  2. 將使用者指派給群組,然後將單一登入存取權指派給群組。

    如需指示,請參閱《AWS IAM Identity Center 使用指南》中的「新增群組」。

必要條件

為了遵循本指南的程序,您需要命令列終端機或 shell 來執行命令。命令清單前會出現提示字元 ($) 及目前的目錄名稱 (如有)。

~/eb-project$ this is a command this is output

在 Linux 和 macOS 上,您可以使用偏好的 Shell 和套件軟體管理工具。在視窗上,你可以安裝視窗子系統為 Linux 得到一個視窗集成的 Ubuntu 和 Bash 的版本。

EB CLI

本教學使用 Elastic Beanstalk 命令列界面 (EB CLI)。關於安裝和設定 EB CLI 的詳細資訊,請參閱安裝 EB CLI設定 EB CLI

Docker

要按照本教程進行操作,您需要 Docker 的有效本地安裝。如需詳細資訊,請參閱 Docker 文件網站上的取得 Docker

通過運行以下命令來驗證 Docker 守護進程是否正在運行。

~$ docker info

第 1 步:創建一個碼頭應用程序和容器

在此範例中,我們建立範例 Flask 應用程式的 Docker 影像,該影像也在中參考。將 Flask 應用程式部署至 Elastic Beanstalk

該應用程序由兩個文件組成:

  • app.py— 包含將在容器中執行的程式碼的 Python 檔案。

  • Dockerfile-碼頭文件來構建你的形象。

將這兩個檔案放在目錄的根目錄中。

~/eb-docker-flask/ |-- Dockerfile |-- app.py

將下列內容新增至您的Dockerfile.

範例 ~/eb-docker-flask/Dockerfile
FROM python:3.12 COPY . /app WORKDIR /app RUN pip install Flask==3.0.2 EXPOSE 5000 CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

將以下內容添加到您的app.py文件中。

範例 ~/eb-docker-flask/app.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello Elastic Beanstalk! This is a Docker application'

構建您的 Docker 容器,使eb-docker-flask用標記圖像。

~/eb-docker-flask$ docker build -t eb-docker-flask

步驟 2:在本機執行應用程式

使用 docker build 命令在本地構建容器映像,並使用標記圖像。eb-docker-flask命令末尾的句號(.)特定路徑是本地目錄。

~/eb-docker-flask$ docker run -dp 127.0.0.1:5000:5000 eb-docker-flask .

使用 docker 運行命令運行容器。該命令將打印正在運行的容器的 ID。該-d選項在後台模式下運行 docker。-p此選項會在 5000 連接埠公開您的應用程式。默認情況下,Elastic Beanstalk 為碼頭平台上的端口 5000 提供流量。

~/eb-docker-flask$ docker run -dp 127.0.0.1:5000:5000 eb-docker-flask container-id

在瀏覽器http://127.0.0.1:5000/ 中導覽至。你應該看到文字「你好 Elastic Beanstalk!這是一個碼頭應用程序「。

運行 docker 殺死命令終止容器。

~/eb-docker-flask$ docker kill container-id

步驟 3:使用 EB CLI 部署您的泊塢視窗應用程式

執行下列命令,為此應用程式建立 Elastic Beanstalk 環境。

若要建立環境並部署您的 Docker 應用程式
  1. 透過 eb init 命令初始化您的 EB CLI 儲存庫。

    ~/eb-docker-flask$ eb init -p docker docker-tutorial us-east-2 Application docker-tutorial has been created.

    此命令創建一個名為的應用程序,docker-tutorial並配置您的本地存儲庫以創建具有最新 Docker 平台版本的環境。

  2. (選用) 再次執行 eb init 來設定預設金鑰對,藉此使用 SSH 連接至執行您應用程式的 EC2 執行個體:

    ~/eb-docker-flask$ eb init Do you want to set up SSH for your instances? (y/n): y Select a keypair. 1) my-keypair 2) [ Create new KeyPair ]

    若您已有金鑰對,請選擇一對,或依照提示建立金鑰對。若未出現提示,或稍後需要變更設定,請執行 eb init -i

  3. 使用 eb create 建立環境並於其中部署您的應用程式。Elastic Beanstalk 會自動為您的應用程序構建一個 zip 文件,並在端口 5000 上啟動它。

    ~/eb-docker-flask$ eb create docker-tutorial

    Elastic Beanstalk 大約需要五分鐘的時間來創建您的環境。

第 4 步:在 Elastic Beanstalk 上運行應用程序

當創建環境的過程完成後,打開您的網站eb open

~/eb-docker-flask$ eb open

恭喜您!您已經部署了帶有 Elastic Beanstalk 的 Docker 應用程序!這會開啟瀏覽器視窗,並使用為應用程式建立的網域名稱。

步驟 5:清除

您可以在完成應用程式的工作後終止環境。Elastic Beanstalk 會終止與您的環境相關聯的所有 AWS 資源。

若要使用 EB CLI 終止 Elastic Beanstalk 環境,請執行下列命令。

~/eb-docker-flask$ eb terminate

AWS 您應用程式的資源

您剛剛建立了單一執行個體應用程式。它可作為單一 EC2 執行個體的簡單範例應用程式使用,因此不需要負載平衡或 auto 擴展。對於單個實例應用程序,Elastic Beanstalk 創建以下 AWS 資源:

  • EC2 執行個體 – 設定在您所選平台上執行 Web 應用程式的 Amazon EC2 虛擬機器。

    每個平台會執行不同一套軟體、設定檔和指令碼,來支援特定的語言版本、架構、Web 容器或其組合。大多數的平台會使用 Apache 或 nginx 做為反向代理,處理您 Web 應用程式前端的網路流量、向它轉送請求、提供靜態資產,並產生存取和錯誤日誌。

  • 執行個體安全群組 – 設定允許從連接埠 80 傳入流量的 Amazon EC2 安全群組。此資源可讓負載平衡器傳來的 HTTP 傳輸資料,到達執行您 Web 應用程式的 EC2 執行個體。在預設情況下,不允許傳輸資料從其他通訊埠傳送。

  • Amazon S3 儲存貯體 - 儲存位置,用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。

  • Amazon CloudWatch 警示 — 兩個 CloudWatch 警示,用於監控環境中執行個體的負載,並在負載過高或過低時觸發。當警示觸發時,您的 Auto Scaling 群組會擴展或縮減以進行回應。

  • AWS CloudFormation 堆疊 — Elastic Beanstalk 用 AWS CloudFormation 來啟動環境中的資源並傳播組態變更。資源定義於範本中,您可在 AWS CloudFormation 主控台中檢視此範本。

  • 網域名稱 – 會路由到您 Web 應用程式的網域名稱,其格式為 subdomain.region.elasticbeanstalk.com

Elastic Beanstalk 會管理所有這些資源。當您終止環境時,Elastic Beanstalk 會終止其中的所有資源。

後續步驟

在您擁有執行應用程式的環境後,可以隨時部署應用程式的新版本或不同的應用程式。部署新的應用程式版本非常快速,因無須佈建或重新啟動 EC2 執行個體。您也可以使用 Elastic Beanstalk 控制台探索您的新環境。如需詳細步驟,請參閱本指南的「入門」一章中的「探索您的環境」。

在您部署一或兩個範例應用程式並準備好開始在本機開發和執行 Docker 應用程式之後,請參閱

使用 Elastic Beanstalk 控制台進行部署

您也可以使用彈性魔豆控制台來啟動範例應用程式。如需詳細步驟,請參閱本指南的「入門一章中的「建立範例應用程式」。