在 Amazon Lightsail 上部署容器 Web 應用程式

入門指南

單元 1:準備您的容器

在本單元中,我們將建立基本的容器化 Web 應用程式

簡介

在本單元中,我們將檢視隨本指南提供的範例應用程式。  我們會逐步建置容器以於本機執行所提供的 Web 應用程式,並且先在筆記型電腦本機測試該 Web 應用程式,之後再部署至雲端。

您將學到的內容

  • 為現有 Web 應用程式建置容器
  • 本機執行容器,以測試應用程式

先決條件

在開始本指南之前,您需要具備:

 完成時間

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 提供。

應用程式的設定方式如此映像所示。

gsg-build-lightsail-5

此應用程式是以下列檔案組成:

  • 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。即應顯示應用程式首頁,如下所示。

gsg-build-lightsail-1

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

結語

在本第一單元,我們建置了非常基本的容器應用程式,並於本機執行,以確保運作正常。在下一個單元中,我們將學習如何建立 Amazon Lightsail Container Service。

下一個單元:建立基礎設施

讓我們知道我們表現如何。

感謝您的意見回饋
我們很高興此頁面對您有所幫助。您願意分享更多詳細資訊以協助我們繼續改進嗎?
關閉
感謝您的意見回饋
很抱歉此頁面沒有幫助到您。您願意分享更多詳細資訊以協助我們繼續改進嗎?
關閉