使用Docker Compose将Winds API部署到AWS ECS

使用Docker Compose将Winds API部署到AWS ECS
https://getstream.io/winds

WindsStream提供的一种流行的RSS和Podcast应用程序,该服务使您可以在数小时而不是数月内构建新闻和活动提要。 Winds是100%开放源代码,后端易于安装在本地环境或云中-我们将在本教程中介绍该任务。 为了确保您通过本教程学习, 确保完成所有先决条件。

前提条件????

与任何教程一样,它也有一些要求。 对于这篇文章,您需要确保已经进行了后续操作并可以继续运行,并且可以继续进行。 如果您决定跳过这些要求,您可能会一hung不振-我们不希望这种情况发生。

  1. 具有对ECSElastiCache的完全访问权限的Amazon Web Services(AWS)帐户
  2. 来自https://github.com/GetStream/Winds的Winds的新克隆
  3. 具有MongoDB Atlas或其他MongoDB提供程序的帐户(我们建议使用MongoDB Atlas)
  4. 的免费帐户
  5. AWS ElastiCache设置并运行Redis的实例( 复制URI,不久即可使用
  6. 来自Mercury的免费API**(用于处理RSS文章解析,因此非常重要)
  7. 一组免费的来自阿尔及利亚的证书
  8. 您计算机上安装的AWS CLI
  9. 除AWS CLI外还安装了ECS CLI
  10. Docker Hub上的帐户(您可以根据需要使用其他提供程序;但是,我强烈建议您坚持使用Docker Hub)

我还要提到的另一件事是,您应该对您的AWS账户具有以下权限(或类似权限):

  • AmazonEC2ContainerRegistryFullAccess
使用Docker Compose将Winds API部署到AWS ECS

而已! ????

设置依赖项????

希望我们在上面提供了详尽的列表,希望您有机会完成各个步骤并复制第三方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 Compose将Winds API部署到AWS ECS

做完了! ????

我希望您喜欢本教程,了解如何使用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