ベンダーをコミットしないこと、および本番環境でcomposerインストールを実行しないことについて、claudiu-creangaと100%同意します。
これを処理する方法は、ライブフォルダーとリリース候補フォルダーを持つことです。git pullコマンドとcomposer install --no-devを実行するのはリリース候補フォルダーです。私たちのプロセスは次のように要約できます:
リリース候補フォルダー:
- 予期しない変更を確認する
- リポジトリを更新
- Composerのインストール
ファイルをライブサイトフォルダーに同期
- ライブサイトフォルダー:
- 静的ファイルをデプロイする
- メンテナンスモードを有効にする
- モジュールを有効にする
- セットアップスクリプトを実行する
- コンパイルDI
- キャッシュの消去
- メンテナンスモードを無効にする
- 権限を更新する
私は実際のコマンドとこれの背後にある理由を提供するより長いブログ記事を書きました:https : //www.c3media.co.uk/blog/c3-news/deploying-magento-2-production-environment/
更新:ライブデータベースをステージングデータベースにコピーし、これを使用してセットアップスクリプトを実行し、静的ファイルを展開し、DIをすべてオフラインでコンパイルします。これは、pub / staticファイルとvarを含めてライブにデプロイできます。セットアップスクリプトが実行されている場合は、サイトを一時的に停止しますが、それ以外の場合はサイトをそのままにしておきます。詳細については、https://www.c3media.co.uk/blog/c3-news/magento-2-deployment-without-downtime/をご覧ください。
更新:ベンダーフォルダーのコミットについて私の考えを変更しました-フォルダーをコミットすることで、これらのファイルの変更履歴を追跡する機能が得られ、誤って何かを変更したかどうかを確認できます。最も重要なのは、composerを実行する必要がないことです。展開時。リポジトリの外部サプライヤーに依存している今、後者は非常に重要です。それらの1つが利用できない場合はどうなりますか?突然展開できなくなります。欠点は、リポジトリが大きくなり、コアハックを行うリスクがあり、私のような開発者がひどく嫌いになることです:)