AWS ECS Production Docker部署

时间:2017-07-25 07:26:26

标签: amazon-web-services docker docker-compose amazon-ecs

我最近开始在自己的个人网站上使用Docker。所以我的网站设计基本上是

Nginx -> Frontend -> Backend -> Database

目前,数据库使用AWS RDS托管。所以我们现在可以把它留下来。

所以这是我的问题

  1. 我目前将应用程序分成不同的存储库。前端和后端分别。

    • 我应该在哪里存储我的' root' docker-compose.yml文件。我无法决定将其存储在前端/后端存储库中。
  2. 在docker-compose.yml文件中,nginx服务是否可以从我的前端服务安装一个没有任何端口的卷并提供该目录?

  3. 我已经尝试了这么多天,但我似乎无法在ECS群集中使用我的3层应用程序部署适当的Docker生产。有什么好的例子我可以参考nginx.conf吗?

  4. 如何自动对我的域进行SSL?

  5. 谢谢你们!

1 个答案:

答案 0 :(得分:2)

  

我应该在哪里存储“root”docker-compose.yml文件。

许多组织使用顶级存储库,用于存储与基础架构相关的元数据,例如CloudFormation模板和docker-compose.yml文件。所以它会是这样的。所以devs首先克隆顶级repo,而repo理想地包含子模块或工具,用于下拉每个子组件或微服务的子repos。

  

在docker-compose.yml文件中,nginx服务器是否可以从我的前端服务挂载一个没有任何端口的卷并提供该目录?

是的,你可以这样做,但这将是危险的,磁盘将是一个瓶颈。如果您的目的是从前端服务获取内容并由Nginx提供服务,那么您应该通过端口将您的前端服务链接到您的Nginx服务器,并将Nginx设置为应用程序容器前面的反向代理。您还可以配置Nginx以将内容从前端服务器缓存到磁盘卷(如果内容太多而无法容纳在内存中)。这将是一种更安全的方式,而不是使用磁盘作为通信链接。以下是如何在AWS ECS上配置此类反向代理的示例:https://github.com/awslabs/ecs-nginx-reverse-proxy/tree/master/reverse-proxy

  

我似乎无法在ECS群集中使用我的3层应用程序部署适当的Docker生产。有什么好的例子我可以参考nginx.conf吗?

我上一篇答案中的链接包含一个应该有用的示例nginx.conf,以及用于在Amazon ECS上部署应用程序容器以及相互链接的nginx容器的示例任务定义。 p>

  

如何自动加密我的域名?

如果您在AWS上,获取SSL的最佳方法是使用应用程序负载均衡器(ALB)的内置SSL终止功能。 AWS ECS与ALB集成,作为将流量传输到容器的方法。 ALB还与Amazon证书管理器(https://aws.amazon.com/certificate-manager/)集成。此服务将为您提供免费的SSL证书,该证书会自动更新。这样您就不必担心SSL证书会再次过期,因为它只会在您的ALB中自动续订和更新。