Почему файл manage.py не выполняется в докерфайле App Engine Flexible?
Итак, dockerfile, который App Engine использует для создания контейнера для приложения Django, выглядит следующим образом:
FROM gcr.io/google-appengine/python@sha256:c6480acd38ca4605e0b83f5196ab6fe8a8b59a0288a7b8216c42dbc45b5de8f6
LABEL python_version=python3.7
RUN virtualenv --no-download /env -p python3.7
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/
CMD exec gunicorn -b :$PORT myteam.wsgi
Мой вопрос в том, почему тогда мы не видим команду :
python manage.py runserver
Вместо этого мы видим: gunicorn -b :$PORT myteam.wsgi
Означает ли это, что команда gunicorn запускает сервер?
Подробнее, исходя из моего комментария, команда, которую вы ожидали увидеть (python manage.py runserver
), используется для запуска сервера разработки django development server. Как показано на этой странице документации:
...легкий веб-сервер, написанный исключительно на Python. Мы включили его в Django, чтобы вы могли быстро разрабатывать вещи, не занимаясь настройкой производственного сервера - такого как Apache - пока вы не будете готовы к производству. Сейчас самое время заметить: не используйте этот сервер ни в чем, напоминающем производственную среду.
.
Сейчас Gunicorn - это так называемый WSGI-сервер, который представляет собой интерфейс для запуска приложений python на веб-серверах. Он позволяет запускать ваш python-код из запросов сервера и предлагает такие преимущества, как масштабирование и гибкость. Вы можете посмотреть полное резюме здесь.
Для развертывания приложения Python на App Engine подойдет сервер WSGI, поскольку это производственная среда, готовая обслуживать любое количество пользователей.
Конкретная команда, запущенная для запуска контейнера CMD exec gunicorn -b :$PORT myteam.wsgi
, будет искать модуль wsgi.py
, входящий в состав проектов Django (в данном случае проект myTeam
). Расширение .py
опускается. Вы можете посмотреть более подробное объяснение здесь . Дайте мне знать, если это было полезно.