我有一个最小的Django项目,我试图部署到Google App Engine托管虚拟机上。我很难理解到底发生了什么以及发生了什么。我有一个app.yaml文件看起来像这样:Django上App Engine托管虚拟机
runtime: custom
vm: true
entrypoint: custom
api_version: 1
manual_scaling:
instances: 1
handlers:
- url: /static
static_dir: static
- url: /.*
script: DjangoVM.wsgi.application
而且看起来像这样一个dockerfile:
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
我requirements.txt看起来是这样的:
Django==1.8.5
gunicorn==19.3.0
scikit-learn==0.16.1
的网站部署没问题,但我的静态文件没有显示出来。因此,在沙盒应用引擎项目中,app.yaml中的处理程序负责提供我的静态内容。我需要在我的dockerfile中配置一个nginx服务器或类似的服务器来提供静态内容吗?
为了帮助我理解这一点,如果我没有gunicorn为我的应用程序提供服务,那么默认情况下,App Engine是否不使用处理程序提供服务?即如果我没有CMD gunicorn DjangoVM.wsgi
会发生什么?自定义运行时是否意味着应用程序引擎默认不会提供我的应用程序,我必须指定特定的WSGI服务器?这些文档对于托管虚拟机还不是很全面。对不起,如果问题看起来有点混乱,但它反映了我目前对这个问题的困惑。谢谢你的帮助!
感谢您为我清理。但后续问题。如果我使用标准运行时,是否有办法利用apt-get来利用托管VM环境?我克隆并运行此项目:https://github.com/GoogleCloudPlatform/appengine-scipy-zombie-apocalypse-python(并在我的项目中也使用了相同的方法),但无济于事。 app.yaml中的'vm_settings'似乎没有做任何事情,因为matplotlib没有安装在虚拟机上。我记得在某处看到它被弃用,但不知道替换。 – TowMater7
使用谷歌基础图像FROM gcr.io/google_appengine/python-compat的自定义运行时应该等同于使用python27运行时与托管虚拟机(不需要nginx或gunicorn),我想大多数人都使用它,因为这是唯一的方法通过pip安装额外的软件包。 – dyeray