在 Amazon Lightsail 上部署容器 Web 应用程序
入门指南
模块 1:准备容器
在本模块中,我们将创建一个基本的容器化 Web 应用程序
简介
在本模块中,我们将查看本指南中提供的示例应用程序。 我们将通过构建容器在本地运行提供的 Web 应用程序,并在将其部署到云之前在我们的本地手提电脑上对其进行测试。
您将学到的内容
- 为现有 Web 应用程序构建容器
- 运行容器以在本地测试应用程序
先决条件
在开始学习本指南之前,您需要:
- 已安装 Docker Desktop
- 具有 Docker 命令的基本应用知识
完成所需时间
10 分钟
模块先决条件
- 具有管理员级访问权限的 AWS 账户**
- 推荐的浏览器:最新版 Chrome 或 Firefox
[**] 过去 24 小时内创建的账户可能尚不具有访问此教程所需服务的权限。
实施
创建客户端应用程序
代码文件夹中提供的 Web 应用程序是使用 Flask 应用程序框架为 Python 开发的 Web 应用程序。
简而言之,Flask 框架包括一个接收 HTTP 请求的迷你服务器、一个将特定请求(一个 HTTP 动词和一个 /路径)关联到您的 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 运行命令的选项有
- -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。您应该会看到如下所示的应用程序主屏幕。

恭喜,您现在已经准备好将容器部署到云中了。