2015-05-01 20 views
1

我有一个可用的Elastic Beanstalk,Django应用程序,但出于以下几个原因,我想从使用预配置的Python平台转向使用通用Docker平台。如果我移动Elastic Beanstalk应用程序以使用Docker,是否需要自己的服务器?

很少有关于在EB中使用Docker的实际应用程序的文档或示例,所以我不清楚是否移动到Docker,我也需要管理服务器,这意味着我的Docker映像将需要它自己的Apache/nginx服务器位于我的django安装程序之上,或者如果EB仍然将其apache服务器与EC2实例上的docker映像并排放置。换句话说,是最后的CMD我的码头工人像一个简单的“蟒蛇manage.py runserver命令”键入cmd?或者一些‘supervisord -N’?我需要类似https://github.com/dockerfiles/django-uwsgi-nginx/blob/master/Dockerfile

感谢

回答

0

您发布的链接是这是一个很好的开始的地方,它是一个功能EB/Docker/Django安装程序的一个很好的概要,还可以看看https://github.com/AndrewSmiley/django-docker-eb(它使用gunicorn而不是nginx/uwsgi)。事实上需要在你的Docker容器中运行一些服务器 - 这个服务器(你链接到的例子中的nginx)就是让你的Docker容器和运行它的EC2实例通信。

如果你看一个典型的Dockerfile,在某些时候你使用EXPOSE来使一个端口对外界可见。 ElasticBeanstalk将在此端口上与您的容器进行通信,因此您的容器需要它自己的某种内部服务器来与这些请求进行交互。 ElasticBeanstalk将在EC2实例(我相信nginx)上安装自己的外部服务器,它将流量引导到您的容器。换句话说:净< - > EC2实例< - > EB Web服务器< - >泊坞窗< - 在你的容器>服务器< - >您的应用程序

虽然你可以想象运行python manage.py runserver为您泊坞CMD,网络服务器,它设置不适合生产。这就是为什么您链接的图像使用supervisord来运行更符合生产环境的web服务器配置。不过,在这两种情况下,您都在Docker容器中运行服务器!

0

图像如果Elastic Beanstalk包含您所需的所有应用程序,数据库和其他服务,Elastic Beanstalk将会成为您的“服务器”。它仍将运行EC2实例,但您不需要直接管理它们。

相关问题