Laravel+xamppで簡単なアプリ作成をしてみたが、ちゃんと開発するならdockerを使うのが一般的らしい
→sailってやつで比較的簡単にdockerを使えるらしい
→どこが簡単やねん!となりまくったので備忘録
環境
Windows10
VScode
docker desktopをインストール済
基本的にVScode経由でpowershellを操作
プロジェクト作成ができない
https://laravel.com/docs/9.x/installation#getting-started-on-windows
公式ドキュメントの通りに進めたかった。
LinuxというPowershellの亜種みたいなの使わないといけないらしい(という認識)、ほーん…
wsl --install
、よし、これでプロジェクト作成できるな!
curl.exe -s https://laravel.build/example-app | bash
Processing fstab with mount -a failed.
<3>WSL (83) ERROR: CreateProcessEntryCommon:370: getpwuid(0) failed 2
<3>WSL (83) ERROR: CreateProcessEntryCommon:374: getpwuid(0) failed 2
<3>WSL (83) ERROR: CreateProcessEntryCommon:577: execvpe /bin/bash failed 2
<3>WSL (83) ERROR: CreateProcessEntryCommon:586: Create process not expected to return
→そもそも必要なもの(ディストリビューション)が足りていなかった
Microsoft StoreからUbuntuをインストール。
wsl.exe -s Ubuntu
で~| bash
系のコマンドをUbuntuで実行するように設定する。
wsl
でUbuntuの中に入って実行したらいけるらしい?
Ubuntuが必要とか公式ドキュメントになかったぞ!
curl.exe -s https://laravel.build/example-app | bash
プロジェクトが作成できた。次はsail upだ!
cd example-app && ./vendor/bin/sail up
-bash: ./vendor/bin/sail: No such file or directory
→Dockerと連携できていなかった。Docker desktopを起動後、
resourceのところからUbuntuにチェックを入れて、
作ったプロジェクトを削除して再度curl~
を実行
正直ここまでに一番時間がかかった
最初の最初に打つコマンドでエラー出ても解決してくれる記事は少ない
Linuxナニモワカラナイ
色々遅い
WSLがwindowsにマウントしてwindowsが……お互いに読み込みあうから時間かかるらしい(?)
WSLの中にフォルダを作ったら一方向に絞れるから早い、なるほど
パーミッションってなに?
CLIでの操作慣れてないしGUIでやっちゃお
エクスプローラーからLinux->Ubuntu->homeまで開いてlaravel-pjって名前のフォルダ作って~
「この操作を実行するアクセス許可が必要です」
?????
パーミッション(権限)の関係でターミナルからUbuntu内でやれってことっぽい、しゃあねえな…
UbuntuのファイルパスとかググってCLIからプロジェクト作成
sail artisan breeze install
とりあえず最低限のひな型はできたかなってことでgithubにプッシュ
Git clone
こんな記事を見かけて、気になったのでやってみた。
上の記事では、sail up
をcomposer install
の前に実行できるように
vendorを.gitignoreから外すことで対応している。
vendorディレクトリがgit hubにあるの気持ち悪いけど簡単なのは上のやり方。
一方で、そもそもUbuntuにcomposerなどをインストールするやり方もあり、
こちらの方が依存パッケージをgit hubに上げない点で丁寧なのかなと思う。
環境を揃えるためのDockerなのに結局個人単位でインストールするのなんだかな~って気もする。
基本的にこれに書いてある範囲で当てはまることをすれば良いが、何のためにそのコマンドを打っているのかは少しでも調べながらやるべきではある。
「Laravelは初心者向けじゃない」、明らかに初心者にはオーバースペックだし学習コスト高くない?って感じる部分もあるが、初心者にとっては「教材豊富」「理解してなくてもとりあえず真似したら動く」の要素は結構大きいのでLaravelを選択するのも間違いではないよな、と思う。
真似したら動くはずがプロジェクト作成だけに2日かかったの思うと間違ってるんじゃないか?
パーミッションまわり
git cloneできないんだけど!とかはこれが原因なことが多い。
ll
コマンドで権限の確認ができる。
簡単な方法(≠正しい方法)
とりあえずこうやればできたよ、を書いていく
sudo git clone
sudoコマンドでgit cloneは通るようになる
composer update
とかでsudo使うな!って警告出されるのと、
このままだとgitがファイルの差異とかを認識できない。
なので、chmodコマンドで権限を書き換える。
example-appの中身に対して再帰的に権限を書き換えることでgitもうまくいく…はず
~/laravel-pjs/example-app $cd ..
~/laravel-pjs $ chmod -R 777 example-app
ただし777は結構リスクもあり、ルートディレクトリでやるとエラーの原因になるらしい
まとめ
(windows cmd/powershellのみを使ってきた人間にとって)sailは簡単じゃない。
多少なりLinuxの理解を求められるため。
とりあえず使って動くことを確認する、という目標は達成できたが、結局dockerのイメージとかcompose.ymlの書き方は何もわからないままなので、また改めて勉強する必要はある。