我可以使用什么命令/configuration部署使用ecs-cli的django + postgres + nginx?

我有一个基本的django / postgres应用程序在本地运行,基于Docker Django文档 。 它使用docker compose在本地运行容器。

我想在Amazon Web Services(AWS)上运行此应用程序,并使用命令行进行部署,而不是AWS控制台。

我的尝试

当我尝试这个时,我结束了:

  • 这个ECM-CLI的XMLconfiguration
  • 这些笔记是关于如何从命令行部署的 。

注意:我试图以一种非常棒的方式启动Python开发服务器,希望在添加nginx之前能够工作。 集群(RDS +服务器)会出现,但是实例将立即死亡。

我然后无法解决的问题

我意识到了这个过程:

  • 该设置需要另一个容器,以便在AWS上运行Web服务器(nginx)( 如本博客文章 ,但本教程使用AWS控制台,我想避免这种情况)
  • ecs-cli对于yml / jsonconfiguration使用不同的语法来configurationdocker-compose,所以你需要从你的本地docker.yml中获得一些单独/相似的代码(我不确定上面的文件是否正确)

那么,我用什么ecs-cli命令和configuration来部署应用程序,还是我所有的事情都是错误的?

随意地说我做错了所有事情。 我也可以使用Elastic Beanstalk – 关于这个的教程似乎并没有使用docker / docker-compose ,但整体看起来更简单(至less有很好的文档)。

我想了解为什么任何给定的方法是一个很好的方法来做到这一点。

如果你只是想在亚马逊云中得到它,你可能希望考虑替代ECS的一种select是使用amazonec2驱动程序使用docker -machine。

在执行docker-compose时,只要确保远程Amazon主机是ACTIVE ,可以用docker-machine ls来查看

您需要使用Amazon Mmgt控制台重新访问的一个项目是打开适用的端口,例如端口80以及在撰写文件中公开的任何其他端口。 一旦安全组安装到VPC,您应该能够在后续执行中简单地引用VPC ID,而无需使用Mgmt控制台来添加端口。 您可能希望从默认的t2.micro调整实例大小以匹配t2.medium指定的t2.medium


如果需要ECS 编排 ,则需要创build一个任务定义,其中包含您在Docker撰写文件中定义的所需的容器定义。 我的build议是利用Mgmt控制台来构build定义,然后抓取可用的JSON定义并将其存储在源代码库中,以便将来的执行可以在注册任务定义时引用的命令行中进行,在给定的集群内执行任务和服务。