経緯
今までリモート勤務だったけど来月から出社する用事がちらほらできそう。
自宅のデスクトップで開発してたけど会社に持っていけるのはMacしかない。
いい機会なのでXAMPP/MAMP開発とはおさらばしてDockerを使おう。
Nuxt + Laravel + Mysqlの環境構築が諸々苦戦しながら完成
さあ動いてくれメンス!
ログイン XAMPP数秒 → Docker1分
こりゃあかんw
原因
Qiitaにも100万記事くらい投稿されているけど、Laravelのアプリフォルダ全部Dockerにマウントさせると
vendorとかstorageみたいな子達が激重でこういうことになるらしい。
こちらの記事を参考にさせていただきました。
Docker for MacのLaravel アプリケーションのが遅い?それ、ファイルをいっぱいマウントしてるからかもです。
こちらの手順で全て解決しました。
何をやっているのかとか行き詰ったところがあったので備忘録として
作業の流れ
とりあえずdocker-compose.ymlを直してみる
version: "3.7"
services:
frontend:
#省略
backend:
build: ./service
tty: true
volumes:
- ./service:/var/www/laravel
ports:
- '8000:8000'
env_file:
- ./.env
#省略
これに参考記事通り追加
version: "3.7"
services:
frontend:
#省略
backend:
build: ./service
tty: true
volumes:
- ./service:/var/www/laravel
- vendor-volume:/var/www/laravel/vendor
- storage-volume:/var/www/laravel/storage
ports:
- '8000:8000'
env_file:
- ./.env
#省略
volumes:
storage-volume:
driver: local
vendor-volume:
driver: local
なるほどつまり、マウントしたくないディレクトリに対して、
一番下のカラvolumeで上書きしてるみたいな感じかな
で起動
docker-compose up -d
でエラー
Warning: require(/var/www/laravel/vendor/autoload.php):
Failed to open stream: No such file or directory in /var/www/laravel/artisan on line 18
vendorがいないらしい。そりゃそうだ。
記事の下の方を読むと注意点としてしっかりこの件についても記載されている。ちゃんと読もうねぼく。
ホストにあるvendorとstorageフォルダをコンテナにコピーしちゃえば良いってことだ
コンテナのIDを取ってこよう
docker ps -a
>CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
0f42d9ca809e backend "docker-php-entrypoi…" 25 minutes ago Up 24 minutes
0.0.0.0:8000->8000/tcp, 9000/tcp backend-1
このIDを使ってcpコマンド
# laravelフォルダに移動
cd service
# コピー
docker cp .\vendor\ 0f42d9ca809e:/var/www/laravel
docker cp .\storage\ 0f42d9ca809e:/var/www/laravel
再度docker-compose up -dで起動
実行速度は…計測してないけどめちゃくちゃ早くなった、解決!
これwindowsの話だけど、Macが早くならないと何も解決していない。
多分同じ方法で早くなってくれるだろうと信じて。。