热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用DockerCompose将WindsAPI部署到AWSECS

https:getstream.iowindsWinds是Stream提供的一种流行的RSS和Podcast应用程序,该服务使您可以在数小时而不是数月内构建新闻和活动
https://getstream.io/winds

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

前提条件📚

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

  1. 具有对ECS和ElastiCache的完全访问权限的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

而已! 💥

设置依赖项🛠

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



推荐阅读
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • Flowable系列教程:运用ProcessEngineConfigurator实现高级流程引擎配置
    本文探讨了通过ProcessEngineConfigurator接口实现对Flowable流程引擎的高级配置方法。这种方法允许开发者通过自定义配置器来增强或修改流程引擎的行为。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 前言Git是目前最流行的版本控制系统,在它的基础之上,GitHub和GitLab成为当前最流行的代码托管平台,它们均提供的代码评审、项目管理、持续集成等功能,越来越多的互联网企业都 ... [详细]
  • Flowable 6.6.0 表单引擎在Web应用中的集成与使用
    本文档提供了Flowable 6.6.0版本中表单引擎在Web应用程序中的配置和使用指南,包括表单引擎的初始化、配置以及在Web环境下的具体实现方法。 ... [详细]
  • Windows环境下部署Kubernetes Dashboard指南
    本指南详细介绍了如何在Windows系统中部署Kubernetes Dashboard,包括下载最新配置文件、修改服务类型以支持NodePort访问、下载所需镜像并启动Dashboard服务等步骤。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
  • Consul 单节点与集群环境构建指南
    本文详细介绍了如何安装和配置 Consul 以支持服务注册与发现、健康检查等功能,包括单节点和集群环境的搭建步骤。 ... [详细]
  • Java 架构:深入理解 JDK 动态代理机制
    代理模式是 Java 中常用的设计模式之一,其核心在于代理类与委托类共享相同的接口。代理类主要用于为委托类提供预处理、过滤、转发及后处理等功能,以增强或改变原有功能的行为。 ... [详细]
  • Spring Security核心概念与应用实践
    本文详细介绍了Spring Security的核心机制,包括其作为一系列过滤器的工作原理,如何实现用户认证与授权,以及常见的配置方法和高级特性如CSRF防护。 ... [详细]
  • 深入理解BIO与NIO的区别及其应用
    本文详细探讨了BIO(阻塞I/O)和NIO(非阻塞I/O)之间的主要差异,包括它们的工作原理、性能特点以及应用场景,旨在帮助开发者更好地理解和选择适合的I/O模型。 ... [详细]
  • JSP服务器概述及搭建指南
    本文详细介绍了JSP服务器的概念、主流服务器软件及其搭建步骤,旨在帮助开发者更好地理解和使用JSP技术。 ... [详细]
  • 本文档详细介绍了2017年8月31日关于MySQL数据库备份与恢复的教学内容,包括MySQL日志功能、备份策略、备份工具及实战演练。 ... [详细]
author-avatar
星魂陨石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有