AWS ECS 生产环境 Docker 部署

3
我最近开始在个人网站上使用Docker。所以我的网站设计基本上是:
Nginx -> 前端 -> 后端 -> 数据库
目前,数据库是使用AWS RDS托管的。所以我们现在可以留下它。
以下是我的问题:
1. 我目前将我的应用程序分为不同的存储库。前端和后端各自有一个。 - 在哪里存储‘根' docker-compose.yml文件?我无法决定是将其存储在前端/后端存储库中的哪一个。
2. 在docker-compose.yml文件中,能否让nginx从我的前端服务中挂载一个卷而不需要任何端口并提供该目录?
3. 我已经尝试了很多天了,但我似乎无法使用ECS Cluster在Docker中部署我的三层应用程序。是否有任何良好的nginx.conf示例可供参考?
4. 如何自动SSL我的域名?
谢谢大家!
1个回答

4

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

许多组织使用顶级存储库来存储基础架构相关的元数据,例如CloudFormation模板和docker-compose.yml文件。因此,开发人员首先克隆顶级存储库,该存储库理想情况下包含子模块或工具,用于拉取每个子组件或微服务的子存储库。

在docker-compose.yml文件中,nginx可以从我的前端服务挂载卷而不需要任何端口并提供该目录吗?

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

我似乎无法使用ECS集群在Docker中部署我的三层应用程序。有没有好的示例nginx.conf可供参考?

上一个答案中的链接包含一个有用的样本nginx.conf,以及一个示例任务定义,用于在Amazon ECS上部署应用程序容器以及与彼此链接的nginx容器。

如何自动为我的域名启用SSL?

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


谢谢。我终于让它工作了!很酷,以前不知道 git 子模块是用来干什么的,但我现在要开始使用它了! - Max Goh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接