🚀

DockerでLaravelコマンドを楽に打つ技

2024/09/08に公開1

はじめに

みなさんはDockerでLaravelのコマンドを打つ時、どうしていますか?
Dockerデスクトップを開いて、CLIタブを開いて、コンテナのシェルに入ってartisanコマンドを打ったり、結構面倒臭いですよね。

私は長年Makefileを作って対応したりしていました。
しかし、Makefileはartisanのコマンドとちょっと相性が悪いです。
artisanに引数がある場合どうしてもうまくいきません。

いくらググってもそれ以上の方法は見つからないまま長い年月が過ぎました。

シェルスクリプトを使えば一撃

試行錯誤の中ついに閃きました。
めちゃくちゃ便利にできたので本当は独占したい情報ですが、教えちゃいます!!

以下のファイルをコピペから作ってください。

「task_manager_app」の文字だけ、開発中のdocker-composeのサービス名に置換すればOKです。

php artisan make ○○ ~ 全般

artisan_make.sh
#!/bin/bash

docker-compose exec task_manager_app php artisan make:$1 $2

php artisan migrate

引数にfreshを与えるとmigrate:fresh、引数なしだとmigrateを実行

artisan_migrate.sh
#!/bin/bash

if [ $1 = "fresh" ]; then
    docker-compose exec task_manager_app php artisan migrate:fresh
else
    docker-compose exec task_manager_app php artisan migrate
fi

php artisan optimize

artisan_optimize.sh
#!/bin/bash

docker-compose exec task_manager_app php artisan optimize

composer dump-autoload

composer_dump.sh
#!/bin/bash

docker-compose exec task_manager_app composer dump-autoload

配置

シェルスクリプトの配置場所はこんな感じ。
docker-compose.ymlと同じディレクトリに配置するといいと思います。

→ tree -L 2 -a
.
├── .env
├── .env.example
├── .tbls.yml
├── .vscode
│   └── settings.json
├── artisan_make.sh
├── artisan_migrate.sh
├── artisan_optimize.sh
├── composer_dump.sh
├── docker
│   ├── .DS_Store
│   ├── mysql
│   └── php
├── docker-compose.yml
└── src
    ├── .editorconfig
    ├── .env
    ├── .env.example
    ├── .gitattributes
    ├── .gitignore
    ├── .styleci.yml
    ├── README.md
    ├── app
    ├── artisan
    ├── bootstrap
    ├── composer.json
    ├── composer.lock
    ├── config
    ├── database
    ├── package.json
    ├── phpunit.xml
    ├── public
    ├── resources
    ├── routes
    ├── server.php
    ├── storage
    ├── tests
    ├── vendor
    └── webpack.mix.js

使い方

以下のようにタイプします。
./artisan_optimize.sh のように打つと実行権限がないと怒られるので、shコマンドで起動しましょう


sh artisan_make controller HelloController

sh artisan_make.sh model Ticket

sh artisan_migrate.sh fresh

sh artisan_optimize.sh

sh artisan_make.sh migration create_ticket_table

sh composer_dump.sh

おわりに

閃きさえすればスクリプトのコーディング自体はすぐにできました。
こんな毎日何度も使うコマンド、なぜ誰も教えてくれないのか・・・
過去10年以上、誰も閃かなかったのか、有償記事にしているのか。
知識を独り占めしているのか。
自分でも今までの苦労はなんだったのかと思いました。

それでは快適なDockerライフをお楽しみください。

株式会社ONE WEDGE

【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp

Discussion