在 Amazon Lightsail 上部署容器 Web 應用程式
入門指南
單元 1:準備您的容器
在本單元中,我們將建立基本的容器化 Web 應用程式
簡介
在本單元中,我們將檢視隨本指南提供的範例應用程式。 我們會逐步建置容器以於本機執行所提供的 Web 應用程式,並且先在筆記型電腦本機測試該 Web 應用程式,之後再部署至雲端。
您將學到的內容
- 為現有 Web 應用程式建置容器
- 本機執行容器,以測試應用程式
先決條件
在開始本指南之前,您需要具備:
- 已安裝 Docker Desktop
- Docker 命令的基本運作知識
完成時間
10 分鐘
單元先決條件
- 有管理員等級存取權限的 AWS 帳戶**
- 建議的瀏覽器:最新版的 Chrome 或 Firefox
[**]過去 24 小時內建立的帳戶可能尚未有權存取本教學課程所需的服務。
實作
建立用戶端應用程式
程式碼資料夾中所提供的 Web 應用程式是以 Python 所適用 Flask 應用程式架構開發的 Web 應用程式。
簡而言之,Flask 架構中含有迷你伺服器,可接收 HTTP 請求;有路由機制能將特定請求 (一個 HTTP 動詞和一個 /path) 與您的 Python 程式碼建立關聯,和轉譯最終 HTML 的範本製作引擎。
最佳實務是在 Flask 應用程式前端有專屬 Web 伺服器。Web 伺服器設定成為提供靜態內容,例如映像、樣式表 (CSS) 和 JavaScript (JS) 檔案。Web 伺服器會將所有其他請求轉送至您的 Flask 應用程式。針對本指南,我們選擇使用 Nginx Web 伺服器。
Nginx 與 Flask 應用程式之間的通訊是採 uWSGI 協定。uWSGI 元件是由 Flask 提供。
應用程式的設定方式如此映像所示。

此應用程式是以下列檔案組成:
- application.py 是應用程式的核心,其定義邏輯、 與後端 (若有) 的通訊及其他內容。
- Pipfile 列出 Web 應用程式的 Python 相依項。
- Dockerfile 可設定容器。首先從正式的 Nginx 容器開始,並新增 Python、Flask 及其相依項。接著會複製 Nginx 組態檔案和啟動指令碼。
- nginx-app.conf 是 Nginx 組態檔案。能確保靜態內容是由 Nginx 提供,其餘請求則傳遞至 uWSGI/Flask
- start.sh 能啟動 Nginx 和 uWSGI 常駐程式。
這是簡式 Web 應用程式,其宣告啟動新服務或產品,並有擷取預先註冊的表單。
下載專案
若要建置與測試容器,請下載專案的本機複本。
開啟一個終端機,然後鍵入以下命令:
git clone https://github.com/aws-developer-center/dev-center-guides/
cd dev-center-guides/GS_003_web_app_lightsail/code
這時起,所有命令皆假定您導覽至此目錄。
建置容器
現在您對對應用程式的主要元件、及其如何共同運作已有清楚的概念,現在我們來建置容器。
若要在容器內建置應用程式,請使用您的終端機,鍵入以下命令:
# Assuming you navigated to the application directory as instructed above
# Make sure to include the space and period after signup in the below command
docker build -t demo-flask-signup .
過幾分鐘後 (取決於您的網際網路頻寬) 容器即建置完成。
您可使用以下命令,列示系統上的所有容器映像:
docker images
# It should output something similar to
REPOSITORY TAG IMAGE ID CREATED SIZE
demo-flask-signup latest 26d7924c5980 28 minutes ago 640MB
(...)
測試容器
若要測試本機上的容器,請先啟動容器,接著以瀏覽器指向該容器。
docker run -p 8080:80 \
--rm \
-v ~/.aws:/root/.aws \
demo-flask-signup:latest
傳遞至 Docker run 命令的選項有
- -p 8080:80 可將本機 TCP 連接埠 8080 銜接至容器連接埠 80 (Nginx)
- --rm 可指示 Docker 在容器停止時加以移除
- -v ~/.aws:/root/.aws 可將目錄 ~/.aws 中的本機 AWS CLI 組態對應至容器目錄 /root/.aws
- 最後,demo-flask-signup:latest - 我們剛建置的容器名稱和標籤。
現在容器已開始執行,請開啟瀏覽器,指向其位址 http://localhost:8080。即應顯示應用程式首頁,如下所示。

恭喜,您現在已有隨即可部署至雲端的容器。