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/註冊

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

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

    當您註冊 時 AWS 帳戶,AWS 帳戶根使用者會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務,請將管理存取權指派給使用者,並且僅使用根使用者來執行需要根使用者存取權的任務

AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時前往 https://aws.amazon.com/ 並選擇我的帳戶 來檢視目前的帳戶活動和管理帳戶

建立具有管理存取權的使用者

註冊 後 AWS 帳戶,請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center並建立管理使用者,以免將根使用者用於日常任務。

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

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

  2. 為您的根使用者開啟多重要素驗證 (MFA)。

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

建立具有管理存取權的使用者
  1. 啟用IAM身分中心。

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

  2. 在 IAM Identity Center 中,將管理存取權授予使用者。

    如需使用 IAM Identity Center 目錄 做為身分來源的教學課程,請參閱 AWS IAM Identity Center 使用者指南 中的使用 設定使用者存取權 IAM Identity Center 目錄

以具有管理存取權的使用者身分登入
  • 若要使用 IAM Identity Center 使用者登入,請使用您建立 IAM Identity Center 使用者時URL傳送到您電子郵件地址的登入。

    如需使用 IAM Identity Center 使用者登入的協助,請參閱 AWS 登入 使用者指南 中的登入 AWS 存取入口網站

指派存取權給其他使用者
  1. 在 IAM Identity Center 中,建立遵循套用最低權限許可最佳實務的許可集。

    如需指示,請參閱《AWS IAM Identity Center 使用者指南》中的建立許可集

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

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

必要條件

注意

AWS 在 2024 年 10 月 1 日之後建立的帳戶,將需要暫時設定 選項,才能成功建立新環境。與新帳戶相同,但僅適用於帳戶尚未擁有環境 的區域,現有帳戶將需要採取相同的動作。如需詳細資訊,請參閱啟動範本

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

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

在 Linux 和 macOS 上,您可以使用偏好的 Shell 和套件軟體管理工具。在 Windows 上,您可以安裝適用於 Linux 的 Windows 子系統,以取得 Windows 整合版本的 Ubuntu 和 Bash。

EB CLI

本教學課程使用 Elastic Beanstalk 命令列介面 (EB CLI)。如需安裝和設定 EB 的詳細資訊CLI,請參閱 安裝 Elastic Beanstalk 指令列介面設定 EB CLI

Docker

若要遵循本教學課程,您需要在本機進行 Docker 的工作安裝。如需詳細資訊,請參閱 Docker 文件網站上的取得 Docker

透過執行下列命令,確認 Docker 常駐程式已啟動執行中的 。

~$ docker info

步驟 1:建立 Docker 應用程式和容器

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

應用程式包含兩個檔案:

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

  • Dockerfile— 用來建置映像的 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 會在 Docker 平台上將流量提供給連接埠 5000。

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

在瀏覽器http://127.0.0.1:5000/ 中導覽至 。您應該會看到「Hello Elastic Beanstalk」文字!這是 Docker 應用程式。

執行 docker kill 命令以終止容器。

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

步驟 3:使用 EB 部署 Docker 應用程式 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 終止 Elastic Beanstalk 環境,請CLI執行下列命令。

~/eb-docker-flask$ eb terminate

AWS 應用程式的 資源

您剛建立了一個單一執行個體應用程式。它可作為具有單一EC2執行個體的簡單範例應用程式,因此不需要負載平衡或自動擴展。對於單一執行個體應用程式,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 應用程式後,請參閱 準備 Docker 映像以部署至 Elastic Beanstalk

使用 Elastic Beanstalk 主控台部署

您也可以使用 Elastic Beanstalk 主控台來啟動範例應用程式。如需詳細步驟,請參閱本指南入門章節中的建立範例應用程式