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
を実行するとどうなるかは未検証。