Help us understand the problem. What is going on with this article?

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 について

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/customize-containers-ec2.html

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

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

「アプリケーションバージョンがデプロイされる前」 においてアプリケーションはサーバ内の/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 をつけておくとその確認を飛ばすことができるので、自動化するときには便利です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした