我有一个运行中的Django flex Elastic Beanstalk应用程序,但是由于某些原因,我想从使用预配置的Python平台过渡到使用通用Docker平台。
在EB中使用Docker使用真实应用程序的文档或示例很少,因此我不清楚是否一旦移至Docker后也需要管理服务器,这意味着我的Docker镜像将需要自己的Apache /将nginx服务器放在我的django设置之上,或者EB是否仍将其Apache服务器与EC2实例上的docker镜像并排放置。换句话说,我的docker镜像上的最终CMD是简单的“python manage.py runserver”类型cmd还是某个“supervisord -n”?我是否需要类似于https://github.com/dockerfiles/django-uwsgi-nginx/blob/master/Dockerfile的镜像?
谢谢
最佳答案
您发布的链接是一个很好的起点,并且很好地描绘了功能性EB / Docker / Django设置的样子。还要看看https://github.com/AndrewSmiley/django-docker-eb(使用gunicorn代替nginx / uwsgi)。实际上,您实际上需要在Docker容器中运行某种服务器-该服务器(链接到示例中的nginx)是让您的Docker容器与正在运行它的EC2实例进行通信的原因。
如果您查看典型的Dockerfile,则有时会使用EXPOSE
使端口对外界可见。 ElasticBeanstalk将在此端口上与您的容器通信,因此您的容器需要自己的某种内部服务器才能与这些请求进行交互。 ElasticBeanstalk将在EC2实例(我相信是nginx)上安装自己的外部服务器,该服务器将流量集中到您的容器。换句话说:Net EC2实例 EB Web服务器 Docker 容器中的服务器您的应用程序
虽然可以想象将python manage.py runserver
作为Docker CMD
运行,但是它设置的Web服务器并不适合用于生产。这就是为什么您链接到的镜像使用 super 用户来运行更适合生产的Web服务器配置的原因。但是,在两种情况下,您都在Docker容器中运行服务器!
关于django - 如果我将我的Elastic Beanstalk应用程序移动为使用Docker,是否需要自己的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29991506/