2015-05-01 1 views
1

У меня работает Elastic Beanstalk, приложение Django, но по нескольким причинам я хотел бы перейти от использования предварительно сконфигурированной платформы Python к использованию платформы Generic Docker.Нужен ли мне мой собственный сервер, если я переведу свое приложение «Упругий бобовое стекло» для использования Docker?

Существует очень небольшая документация или примеры использования реального приложения с использованием Docker в пределах EB, поэтому я не понимаю, когда я перейду в Docker, мне также нужно управлять сервером, что означает, что мне потребуется изображение докеры собственный сервер Apache/nginx поверх моей установки django, или если у EB все равно будет свой сервер apache рядом с изображением докеров в экземпляре EC2. Другими словами, окончательный CMD на моем Docker изображение простой «питон 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 (в котором вместо nginx/uwsgi используется gunicorn). факту нужен какой-то сервер, работающий в вашем контейнере Docker - этот сервер (nginx в примере, к которому вы привязались) - это то, что позволяет вашему контейнеру Docker разговаривать с экземпляром EC2, который его запускает.

Если вы посмотрите на типичный файл Docker, в какой-то момент вы используете EXPOSE, чтобы сделать порт видимым для внешнего мира. ElasticBeanstalk будет связываться с вашим контейнером на этом порту, поэтому вашему контейнеру нужен собственный внутренний сервер для взаимодействия с этими запросами. ElasticBeanstalk установит собственный внешний сервер на экземпляр EC2 (я думаю, nginx), который направляет трафик на ваш контейнер. Другими словами: Net < -> EC2 Instance < -> EB вебсервером < -> Docker < -> Сервер в контейнере < -> Ваше приложение

В то время как вы, вероятно, может запустить python manage.py runserver в качестве Докер CMD, веб-сервер, что его не подходит для производства. Вот почему изображение, с которым вы связаны, использует супервизор для запуска более готовой конфигурации веб-сервера. В обоих случаях вы используете сервер внутри контейнера Docker!

0

ли Нет. Эластичный Beanstalk эффективно будет вашим «сервером», если он содержит все приложения, базы данных и другие службы, которые вам нужны. Он все равно будет запускать экземпляры EC2, но вам не нужно будет управлять ими напрямую.

Смежные вопросы