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なので、いずれドキュメント化されるのかもしれません。