GAE/SE (Google App Engine Standard Environment) のPHP 7.2環境に関する話題です。
GAE/SE PHP 7.2環境ではapp.yamlの文法が以前と変わっている部分があります。その一つが、デプロイ対象から外すファイルの設定です。
以前はapp.yamlのskip_filesという設定でデプロイしないファイルの指定ができたのがphp72から廃止になり、代わりに.gcloudignoreで設定するようになりました。
.gcloudignoreに何を書くべきか、何を書いてはいけないか
デプロイしたくないファイルというのは通常.gitignoreとも重複することが多いはずです。たとえば、VimのスワップファイルやEmacsのバックアップファイルをデプロイ対象から外すのは良いアイデアだと思います。
ところで、GAE/SE PHP 7.2環境でcomposerを使う場合、次の点に注意が必要です。
-
/vendor/はデプロイ不要 -
/composer.lockはデプロイ必須
逆じゃないの?と思った人がいるかもしれませんが、私は逆にしてハマりました。
どうやらPHP 7.2環境では/vendor/ディレクトリは特別扱いされているようで、自分の手元の/vendor/をアップロードしても無視されます。代わりに、アップロードされたcomposer.lockを元にcomposer installした結果が反映されます。
ですから、典型的な.gcloudignoreは下記のようになります。
.gcloudignore
.git
.gitignore
# Vim swap
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# Emacs backup
*~
\#*\#
.\#*
# PHP Composer
composer.phar
/vendor/
グチ
意図はわかるけど、そんな挙動だなんて予想つかないでしょ…。そんなこと書いてあるドキュメントも見当たらないし…。
本稿執筆時点(2018年9月)ではGAE/SE PHP 7.2環境はbetaなので、いずれドキュメント化されるのかもしれません。