6
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Organization

eb deploy するときに勝手にmigration と cache clear をしてくれるようにする(Laravelアプリケーション)

これは何

Laravelを使ったアプリケーションにおいて、AWS ElasticBeanstalk において、コードデプロイのタイミングで migration と cache clear をやってくれるようにする方法です。

やり方

.ebextensions/ 以下の ファイルに以下の記述を追加します。

ebextensions/migrate_and_cache_clear.config
container_commands:
  01-migration:
    command: "php artisan migrate --force"
    leader_only: true
  02-cache-clear:
    command: "php artisan cache:clear"
    leader_only: true

補足

container_commands について

コンテナコマンドは、アプリケーションおよびウェブサーバーが設定され、アプリケーションバージョンアーカイブが抽出された後、アプリケーションバージョンがデプロイされる前に実行されます。

要するに、デプロイ直前に実行されます。

「アプリケーションバージョンがデプロイされる前」 においてアプリケーションはサーバ内の/var/app/ondeck/に配置されます。
これは eb-activity.log において AppDeployStage0/AppDeployPreHook/01_unzip.sh のステップを見ると知ることができます。
ただしこれを知らなくても、cwdオプションのデフォルトの設定は以下のようになっているので、これを気にする必要はありません。

cwd
(オプション)作業ディレクトリです。デフォルトでは、これは解凍されたアプリケーションのステージングディレクトリです。

leader_only オプションについて

(オプション) Elastic Beanstalk によって選択された単一のインスタンスでコマンドを実行するのみです。

eb で複数台構成で運用している場合にはこのオプションを指定しておくことで、そのデプロイにおいては1回だけコマンドを実行することができます。

migrate コマンドの --force オプションについて

ENV=production の環境においては、migrateコマンドは本当に本番だけどデプロイしていいのか確認を取るようになっています。
--force をつけておくとその確認を飛ばすことができるので、自動化するときには便利です。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
6
Help us understand the problem. What are the problem?