0

Google App Engine マネージド VM にデプロイしようとしている最小限の Django プロジェクトがあります。何が起こっているのか、何が何を提供しているのかを正確に理解するのに少し苦労しています。次のような 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

そして、次のような 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 サーバーを指定する必要があることを意味しますか? マネージド VM のドキュメントはまだ完全ではありません。質問が少し混乱しているように見える場合は申し訳ありませんが、それはこの件に関する私の現在の混乱も反映しています. 助けてくれてありがとう!

4

1 に答える 1

0

ここで 2 つのことを混同しているようです。

マネージド VM をデプロイするには、標準ランタイム (この場合は Python) を使用する方法と、カスタム ランタイムを使用する方法の 2 つがあります。

標準ランタイムは基本的に App Engine アプリです。通常どおり app.yaml でルートを定義します。値はruntime「python27」である必要があります。ただし、Dockerfile は必要ないため、nginx や gunicorn は含まれません。ルートは App Engine ランタイムによって提供されます。

カスタム ランタイムはruntime、「custom」の値を指定することによって定義されます。これは、Dockerfile で定義された完全なカスタム アプリです。app.yaml でルートを宣言しません。ルートは、コンテナー内で適切に構成された nginx/gunicorn によって提供される必要があります。

于 2015-11-23T20:06:35.653 に答える