Dockerで開発環境を構築してTDDを用いて個人開発をしてたのですが、テストを実行する度に
$ vendor/bin/phpunit
と入力するのめんどくさいですよね。
そこでエイリアスを設定して、puと入力したらテストを走らせるようにしようとしたのですが、コンテナ無いから抜けたらエイリアスが使えないという現象に出くわしたので忘備録として残しておきます。
// ashでAppコンテナ内に入る
$ docker-compose exec app ash
// ルートディレクトリに移動
$ cd
// .profileファイルをviコマンドで開く
$ vi .profile
# .profileファイル内に下記を追加
alias pu="clear && vendor/bin/phpunit"
alias pf="clear && vendor/bin/phpunit --filter"
// ファイルの読み込み直し
$ source .profile
// ドキュメントルートに移動
$ cd /work/
// エイリアスで設定したコマンドを実行
$ pu ←ここでは実行できる
// 一旦コンテナを抜ける
$ exit
// ashでAppコンテナ内に再び入る
$ docker-compose exec app ash
// エイリアスで設定したコマンドを実行
$ pu ←ここではエイリアスで設定したコマンドが実行できない
ash: pu: not found
原因として、コンテナ内に入った時はデフォルトでは非ログインシェル状態だそうです。
そのためユーザーを変更して上げる必要があるみたいです。
// ashでAppコンテナ内に入る
$ docker-compose exec app ash
// ashユーザーにスイッチ
$ ash -l
// エイリアスで設定したテストを走らせる
$ pu
間違ってたら優しくご指摘お願いします。