如果我移动Elastic Beanstalk应用程序以使用Docker,是否需要自己的服务器?

我有一个工作的Elastic Beanstalk,Django应用程序,但由于几个原因,我想从使用预configuration的Python平台,转到使用通用的Docker平台。

在EB中使用一个真正的应用程序使用Docker的文档或示例非常less,所以我不清楚是否移动到Docker,我也需要pipe理服务器,这意味着我的Docker映像将需要它自己的Apache / nginx服务器在我的django设置之上,或者如果EB仍然将它的apache服务器和EC2实例上的docker镜像放在一起。 换句话说,我的docker图像上的最后一个CMD是一个简单的“python manage.py runserver”typescmd?还是一些“supervisord -n”?我需要一个类似于https://github.com/dockerfiles/django的图像-uwsgi-nginx / blob / master / Dockerfile ?

谢谢

你发布的链接是一个很好的开始,并且是functionEB / Docker / Django设置的一个非常好的草图。 也请看https://github.com/AndrewSmiley/django-docker-eb (使用gunicorn而不是nginx / uwsgi)。 实际上你需要在你的Docker容器中运行一些服务器 – 这个服务器(你链接到的例子中的nginx)就是让你的Docker容器和运行它的EC2实例通信。

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

虽然你可以设想运行python manage.py runserver作为你的Docker CMD ,但是它设置的web服务器并不适合生产。 这就是为什么您链接的图像使用supervisord运行更多生产就绪的web服务器configuration。 不过,在这两种情况下,您都在Docker容器中运行服务器!

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