本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
QuickStart:將 Docker 應用程式部署至 Elastic Beanstalk
本 QuickStart 教學課程會逐步引導您建立 Docker 應用程式並將其部署到 AWS Elastic Beanstalk 環境。
注意
本 QuickStart 教學課程旨在用於示範目的。請勿將本教學課程中建立的應用程式用於生產流量。
章節
AWS 您的帳戶
如果您尚未成為 AWS 客戶,則需要建立 AWS 帳戶。註冊可讓您存取 Elastic Beanstalk 和其他您需要 AWS 的服務。
如果您已經有 AWS 帳戶,則可以移至 必要條件。
註冊 AWS 帳戶
如果您沒有 AWS 帳戶,請完成下列步驟以建立 。
若要註冊 AWS 帳戶
開啟https://portal.aws.amazon.com/billing/註冊
。 請遵循線上指示進行。
部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。
當您註冊 時 AWS 帳戶,AWS 帳戶根使用者會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務,請將管理存取權指派給使用者,並且僅使用根使用者來執行需要根使用者存取權的任務。
AWS 會在註冊程序完成後傳送確認電子郵件給您。您可以隨時前往 https://aws.amazon.com/
建立具有管理存取權的使用者
註冊 後 AWS 帳戶,請保護 AWS 帳戶根使用者、啟用 AWS IAM Identity Center並建立管理使用者,以免將根使用者用於日常任務。
保護您的 AWS 帳戶根使用者
-
選擇根使用者並輸入 AWS 帳戶 您的電子郵件地址,以帳戶擁有者AWS Management Console
身分登入 。在下一頁中,輸入您的密碼。 如需使用根使用者登入的說明,請參閱 AWS 登入 使用者指南中的以根使用者身分登入。
-
為您的根使用者開啟多重要素驗證 (MFA)。
如需指示,請參閱 IAM 使用者指南 中的為您的 AWS 帳戶 根使用者 (主控台) 啟用虛擬MFA裝置。
建立具有管理存取權的使用者
-
啟用IAM身分中心。
如需指示,請參閱 AWS IAM Identity Center 使用者指南中的啟用 AWS IAM Identity Center。
-
在 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 存取入口網站。
必要條件
注意
AWS 在 2024 年 10 月 1 日之後建立的帳戶,將需要暫時設定 選項,才能成功建立新環境。與新帳戶相同,但僅適用於帳戶尚未擁有環境 的區域,現有帳戶將需要採取相同的動作。如需詳細資訊,請參閱啟動範本。
為了遵循本指南的程序,您需要命令列終端機或 shell 來執行命令。命令清單前會出現提示字元 ($) 及目前的目錄名稱 (如有)。
~/eb-project$ this is a command
this is output
在 Linux 和 macOS 上,您可以使用偏好的 Shell 和套件軟體管理工具。在 Windows 上,您可以安裝適用於 Linux 的 Windows 子系統
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 buildeb-docker-flask
。路徑為本機目錄之命令規格結尾的期間 (.
)。
~/eb-docker-flask$
docker run -dp 127.0.0.1:5000:5000 eb-docker-flask
.
使用 docker 執行
~/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 應用程式
-
使用 eb init命令初始化您的 EB CLI儲存庫。
~/eb-docker-flask$
eb init -p docker docker-tutorial
Application docker-tutorial has been created.us-east-2
此命令會建立名為 的應用程式,
docker-tutorial
並設定您的本機儲存庫,以使用最新的 Docker 平台版本建立環境。 -
(選用) 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。
-
使用 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 主控台來啟動範例應用程式。如需詳細步驟,請參閱本指南入門章節中的建立範例應用程式。