Django на виртуальной машине, управляемой App Engine
У меня есть минимальный проект Django, который я пытаюсь развернуть на виртуальных машинах, управляемых Google App Engine. У меня возникли проблемы с пониманием того, что происходит и что служит. У меня есть файл app.yaml, который выглядит следующим образом:
runtime: custom
vm: true
entrypoint: custom
api_version: 1
manual_scaling:
instances: 1
handlers:
- url: /static
static_dir: static
- url: /.*
script: DjangoVM.wsgi.application
И докер-файл, который выглядит так:
FROM gcr.io/google_appengine/python
RUN apt-get update
RUN apt-get -y install python-numpy python-scipy
ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
ADD . /app
CMD gunicorn DjangoVM.wsgi
Мой файл require.txt выглядит так:
Django==1.8.5
gunicorn==19.3.0
scikit-learn==0.16.1
Сайт разворачивается нормально, но мои статические файлы не отображаются. Поэтому в проекте ядра приложения для песочницы обработчики в app.yaml позаботятся о том, чтобы обслуживать мой статический контент. Нужно ли мне настраивать сервер nginx или аналогичный сервер в моем dockerfile для обслуживания статического контента?
Чтобы помочь мне понять это, если у меня не было gunicorn, обслуживающего мое приложение, разве App Engine не обслуживает его по умолчанию с использованием обработчиков? т.е. что случилось бы, если бы у меня не было CMD gunicorn DjangoVM.wsgi
? Означает ли пользовательская среда выполнения, что ядро приложения не будет обслуживать мое приложение по умолчанию, и мне нужно указать конкретный сервер WSGI? Документация для управляемых виртуальных машин еще не очень полная. Извините, если вопросы кажутся немного запутанными, но это также отражает мое текущее замешательство по этому вопросу. Спасибо за любую помощь!
1 ответ
Похоже, вы перепутали две вещи здесь.
Существует два способа развертывания управляемого виртуального компьютера: использование стандартной среды выполнения, в данном случае Python, и использование пользовательской среды выполнения.
Стандартное время выполнения - это приложение App Engine; Вы определяете свои маршруты в app.yaml как обычно. runtime
значение должно быть "python27". Однако вам не нужен Dockerfile, и поэтому он не будет включать nginx или gunicorn; маршруты обслуживаются средой выполнения App Engine.
Пользовательская среда выполнения определяется путем предоставления runtime
значение "обычай". Это полностью настраиваемое приложение, определяемое Dockerfile. Вы не объявляете маршруты в app.yaml, и они должны обслуживаться правильно настроенным nginx/gunicorn в вашем контейнере.