Python
Django
AppEngine
GoogleCloudPlatform

Google App Engine Flexible Environment で初期設定コマンド実行

More than 1 year has passed since last update.

Google App Engine Flexible Environment で初期設定コマンド実行

Google App Engine Flexible Environment の中身は Docker なので、DockerfileのCMDおよびdocker-compose.ymlで複数のbashコマンドを実行させる方法 が使える。

前提条件

  • 2017年10月時点の Google App Engine Flexible Environment で動作確認。

例: Django で python manage.py migrate の実行後 gunicorn を起動する。

例として、Running Django in the App Engine Flexible Environment のソース・ファイルを使用する。
変更箇所は下記になる。

appengine/flexible/django_cloudsql/app.yaml

runtime: python
env: flex
entrypoint: bash -c "python manage.py migrate && gunicorn -b :$PORT mysite.wsgi"

beta_settings:
    cloud_sql_instances: <your-cloudsql-connection-string>

runtime_config:
  python_version: 3

entrypoint で、 bash -c "コマンドA && コマンドB" のように指定する。

やりたかったこと

Heroku でいう heroku run python manage.py migrate を Google App Engine Flexible Environment で実現したかった。

gcloud app instances ssh でインスタンスにログイン -> Docker に入って python manage.py migrate を検討したが、うまくいかなかった(エラー原因の特定に時間がかかりそうだったので途中で諦め)。

懸案事項

上記の方法だと、App Engine のインスタンスが起動するたびに実行されるので、複数インスタンスがあると複数回 python manage.py migrate が発行される。
複数インスタンスから同時に python manage.py migrate を実行するとどうなるかは未検証。