Winds是Stream提供的一种流行的RSS和Podcast应用程序,该服务使您可以在数小时而不是数月内构建新闻和活动提要。 Winds是100%开放源代码,后端易于安装在本地环境或云中-我们将在本教程中介绍该任务。 为了确保您通过本教程学习, 请确保完成所有先决条件。
前提条件📚
与任何教程一样,它也有一些要求。 对于这篇文章,您需要确保已经进行了后续操作并可以继续运行,并且可以继续进行。 如果您决定跳过这些要求,您可能会一hung不振-我们不希望这种情况发生。
- 具有对ECS和ElastiCache的完全访问权限的Amazon Web Services(AWS)帐户
- 来自https://github.com/GetStream/Winds的Winds的新克隆
- 具有MongoDB Atlas或其他MongoDB提供程序的帐户(我们建议使用MongoDB Atlas)
- 流的免费帐户
- AWS ElastiCache设置并运行Redis的实例( 复制URI,不久即可使用 )
- 来自Mercury的免费API密钥(用于处理RSS文章解析,因此非常重要)
- 一组免费的来自阿尔及利亚的证书
- 您计算机上安装的AWS CLI
- 除AWS CLI外还安装了ECS CLI
- Docker Hub上的帐户(您可以根据需要使用其他提供程序;但是,我强烈建议您坚持使用Docker Hub)
我还要提到的另一件事是,您应该对您的AWS账户具有以下权限(或类似权限):
- AmazonEC2ContainerRegistryFullAccess
而已! 💥
设置依赖项🛠
希望我们在上面提供了详尽的列表,希望您有机会完成各个步骤并复制第三方URI和凭据以继续前进。 下一步要求我们修改Winds / api目录中的docker-compose-aws文件。
启动时,文件将如下所示:
按照docker-compose-aws.yml文件中的指示填写凭据。 不要忘记您的JWT的随机值 。
您应该得到一个看起来像这样的文件:
注意:我们在 docker-compose.yml 文件上 使用了 docker-compose-aws.yml 文件,因为我们在同一目录中有两个docker-compose文件。 通过在文件后添加“ -aws”,我们可以轻松指定在构建环境时要命中的文件。
使用ECS CLI启动并运行🤔
Amazon Web Services(AWS CLI)的Elastic Container Service命令行界面提供了高级命令,可简化本地开发环境中的集群和任务的创建,更新和监视。
在这里重要的是ECS CLI支持Docker Compose文件,这是我们用来定义应用程序如何以及应该如何在云中运行的文件。 虽然它是用于多容器应用程序的(在docker-compose-aws.yml中也有一个文件),但出于本教程的目的,我们将使用单个容器应用程序。
让我们继续并配置AWS ECS CLI,以便我们可以启动并运行。 首先,我们将使用以下命令创建“配置文件”:
接下来,使用以下命令很好地完成配置:
注意:将启动类型替换为您要默认使用的启动类型(EC2)region_name和所需的AWS区域,将cluster_name(WINDS)替换为要使用的现有Amazon ECS集群或新集群的名称,并使用configuration_name(WINDS)您想要提供此配置的名称。
使用EC2任务创建集群✍
AWS ECS需要权限,以便您的EC2任务可以将日志存储在CloudWatch中。 任务执行IAM角色包含此权限。 为此,我们需要使用AWS CLI创建任务执行IAM角色。
1.创建一个名为task-execution-assume-role.json的文件 ,其内容如下:
2.创建任务执行角色(与task-execution-assume-role.json在同一目录中):
3.附加任务执行角色策略:
创建群集和安全组🔑
接下来,我们将创建带有安全组的Amazon ECS集群。
1.在集群配置中,我们已将EC2指定为默认启动类型,因此以下命令将创建一个空集群和一个配置有两个公共子网的VPC:
注意:创建资源时,此命令可能需要几分钟才能完成。 您还需要记下创建的VPC和子网ID,我们将很快使用它们。
2.使用AWS CLI,使用上一个命令中输出的VPC值创建一个安全组:
3.使用AWS CLI,我们将添加一个安全组规则以允许对端口80的入站访问:
指定AWS ECS的参数
除了我们为您创建的docker-compose-aws.yml文件之外,您还需要创建一个具有以下内容的ecs-params.yml文件:
注意:此参数文件特定于AWS ECS,如果要在AWS上运行Winds API,则此文件是必需的。 您可以在上面的先前请求中找到需要指定的值。
将映像部署到Docker Hub🚴
在本节中,我们将概述如何将Winds API构建,标记和上传到Docker和AWS。
创建和上传
对于此步骤,您需要使用以下命令登录Docker:
然后,运行以下命令以构建Docker映像(您必须位于/ api目录中):
标记和推送
首先,您需要获取Docker Image ID,可以运行docker image list ,它将输出所有Docker映像。 从标记为“ winds”的那一个中获取ID,并将其放入下面的命令中。
正确标记图像所需的命令是:
现在,是时候将标记的图像推送到AWS了。 您可以执行以下操作:
大约需要30秒,但要完成。
部署到集群📤
现在我们已经配置了文件和基础架构,我们可以继续使用以下命令将Docker compose文件部署到ECS:
注意:默认情况下,该命令在当前目录中查找名为docker-compose.yml的文件。 因为我们有两个文件,所以我们需要使用–file选项(或简称-f)指定另一个docker compose文件。
如果一切顺利,您应该在ECS控制台中看到以下内容! 如果单击任务,您会注意到有一个公共IP地址可以让您查看API(它应该以“ pong”响应)。
做完了! 👏
我希望您喜欢本教程,了解如何使用Docker将Winds部署到AWS。 在以后的文章中,我将概述如何在Google和Digital Ocean上进行相同的部署。
如果您有兴趣部署前端,请查看这篇文章 ,概述如何使用AWS S3和CloudFront进行部署。
编码愉快! 🎉
标签: AWS ECS , 容器 , 部署 , Docker , 风
最初于 2018 年9月6日 发布在 getstream.io 。
From: https://hackernoon.com/deploying-the-winds-api-to-aws-ecs-with-docker-compose-4daf8d130d3b