Laravel Sail 環境で Sail をインストールする前だとイメージのビルドができない
Sail インストール前だと Docker イメージのビルドがこける
これは開発環境の初期構築時のみに発生する問題です。
Laravel Sail 環境で Sail 本体がインストール前、つまり composer install
実行前だと以下のようなエラーが出て Docker イメージのビルドが失敗してしまいました。
=> ERROR [ 7/14] RUN groupadd --force -g sail 0.3s ------ > [ 7/14] RUN groupadd --force -g sail: #0 0.301 groupadd: invalid group ID 'sail' ------ failed to solve: executor failed running [/bin/sh -c groupadd --force -g $WWWGROUP sail]: exit code: 3
じゃあ先に composer install
すれば良いのでは?
となるのですが、この場合ローカルで実行することになります。(コンテナが立ち上がってないので当たり前ですね)
すると、該当するバージョンの PHP をローカルにインストールする必要が発生します。
そもそも、そんな風にバージョンを気にしなくて良くするのがコンテナなのでは…?と思ったりしたので調べてみると割とすぐに対応できました。
対処:環境変数をセットしよう
エラーを見てみると$WWWGROUP
という環境変数がセットされていないため groupadd コマンドが失敗してしまっているようです。
じゃあセットしましょう。ということで以下のコマンドで事前に実行しておけば問題なく通りました。
export WWWGROUP=${WWWGROUP:-$(id -g)}
あとはいつも通りコンテナを立ち上げてから中に入りcomposer install
を実行することで Sail をインストールすることができました!
コマンドの出どころ
vendor/laravel/sail/bin/sail
内に同じコマンドがあります。
sail コマンド実行時にセットしているのと同じ値を環境変数にセットしています。