はじめに
今のプロジェクトではDocker Composeを使って環境構築しています。
その時に問題なのが、コンテナ起動やコンテナ内で実行(composerとかartisanとか)したいときに打つコマンドの長さです。
毎回毎回docker-compose exec app php artisan ...
など打つのはちょっと面倒。
コマンドのエイリアスを設定しても良いのですが、複数人で開発するときに全員に設定してもらうのもなぁ。。。
との思いで、スクリプトファイルを用意しましています。
下記記事を参考にしています。感謝
Docker コマンドのショートカットをプロジェクトルートに置いたら快適になった – Qiita
ファイル構成
Linux(Bash)とWindows(PowerShell)の両方に対応できるよう作成しています。
┬- bin (スクリプトディレクトリ)
│ ├- doc.sh
│ ├- artisan.sh
│ ├- composer.sh
│ ├- doc.ps1
│ ├- artisan.ps1
│ └- composer.ps1
├- docker (Dockerの設定)
│ └- Dockerfile
├- src (ソースディレクトリ)
└- docker-compose.yml
bash用
- bin/doc.sh
#!/bin/bash
cmd="docker-compose $@"
echo $cmd
$cmd
- bin/artisan.sh
コンテナ起動時はexec、停止時はrunコマンドで実行するように設定
#!/bin/bash
set -eu
if docker-compose ps app | grep -q Up; then
cmd="docker-compose exec app php artisan $@"
else
cmd="docker-compose run --rm app php artisan $@"
fi
echo $cmd
$cmd
- bin/composer.sh
#!/bin/bash
set -eu
if docker-compose ps app | grep -q Up; then
cmd="docker-compose exec app composer $@"
else
cmd="docker-compose run --rm app composer $@"
fi
echo $cmd
$cmd
powershell用
- bin/doc.ps1
$cmd = "docker-compose $Args"
echo $cmd
invoke-expression $cmd
- bin/artisan.ps1
$run = docker-compose.exe ps app | Out-String -Stream | Select-String "Up"
if($run) {
$cmd = "docker-compose exec app php artisan $Args"
} else {
$cmd = "docker-compose run --rm app php artisan $Args"
}
echo $cmd
invoke-expression $cmd
- bin/composer.ps1
※artisan.ps1とほぼ同じため省略
使い方
プロジェクトルートに移動して下記コマンドを実行
# コンテナ起動
./bin/doc.ps1 up -d
# artisanコマンド実行
./bin/artisan.ps1 make:controller HogeController
コメント