如果我移动我的 Elastic Beanstalk 应用程序以使用 Docker,我是不是需要自己的服务器?
Posted
技术标签:
【中文标题】如果我移动我的 Elastic Beanstalk 应用程序以使用 Docker,我是不是需要自己的服务器?【英文标题】:Do I need my own server if I move my Elastic Beanstalk app to use Docker?如果我移动我的 Elastic Beanstalk 应用程序以使用 Docker,我是否需要自己的服务器? 【发布时间】:2015-07-11 13:24:48 【问题描述】:我有一个可用的 Elastic Beanstalk,Django 应用程序,但出于多种原因,我想从使用预配置的 Python 平台转移到使用通用 Docker 平台。
在 EB 中使用 Docker 使用真实应用程序的文档或示例非常少,所以我不清楚在迁移到 Docker 后是否还需要管理服务器,这意味着我的 docker 映像将需要它的在我的 django 设置之上拥有自己的 Apache/nginx 服务器,或者如果 EB 仍将其 apache 服务器与 EC2 实例上的 docker 映像并排放置。换句话说,我的 docker 镜像上的最终 CMD 是一个简单的“python manage.py runserver”类型的 cmd?还是一些“supervisord -n”?我需要一个类似于 https://github.com/dockerfiles/django-uwsgi-nginx/blob/master/Dockerfile 的镜像吗?
谢谢
【问题讨论】:
【参考方案1】:您发布的链接是一个很好的起点,它很好地描绘了功能性 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 Instance EB webserver Docker 容器中的服务器 你的应用程序
虽然您可以想象将 python manage.py runserver
作为您的 Docker CMD
运行,但它设置的网络服务器并不适合生产。这就是为什么您链接到的图像使用 supervisord 来运行更适合生产的网络服务器配置。不过,在这两种情况下,您都在 Docker 容器中运行服务器!
【讨论】:
【参考方案2】:没有。如果 Elastic Beanstalk 包含您需要的所有应用程序、数据库和其他服务,它将有效地成为您的“服务器”。它仍将运行 EC2 实例,但您无需直接管理它们。
【讨论】:
以上是关于如果我移动我的 Elastic Beanstalk 应用程序以使用 Docker,我是不是需要自己的服务器?的主要内容,如果未能解决你的问题,请参考以下文章
VCS 上的 Elastic Beanstalk .config 文件?
elastic beanstalk 如何更新我的 Rails 数据库?
将超过特定大小的文件发布到 Elastic Beanstalk (EC2) 服务器时出现问题
在 SSH 中缺少 Elastic Beanstalk 环境变量