在 Amazon Lightsail 上部署容器 Web 应用程序

入门指南

模块 1:准备容器

在本模块中,我们将创建一个基本的容器化 Web 应用程序

简介

在本模块中,我们将查看本指南中提供的示例应用程序。  我们将通过构建容器在本地运行提供的 Web 应用程序,并在将其部署到云之前在我们的本地手提电脑上对其进行测试。

您将学到的内容

  • 为现有 Web 应用程序构建容器
  • 运行容器以在本地测试应用程序

先决条件

在开始学习本指南之前,您需要:

 完成所需时间

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

应用程序的设置如图所示。

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 运行命令的选项有

  • -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 容器服务。

下一模块:创建基础设施

请就我们的表现提供反馈。

感谢您的反馈
很高兴此页面对您有所帮助。您是否乐意分享更多详细信息,以帮助我们继续改进?
关闭
感谢您的反馈
很抱歉,此页面未能帮到您。您是否乐意分享更多详细信息,以帮助我们继续改进?
关闭