2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DockerでLaravelが重すぎたのでvendorとstorageをマウントしないことで解決した気がする

Posted at

経緯

今までリモート勤務だったけど来月から出社する用事がちらほらできそう。
自宅のデスクトップで開発してたけど会社に持っていけるのはMacしかない。
いい機会なのでXAMPP/MAMP開発とはおさらばしてDockerを使おう。

Nuxt + Laravel + Mysqlの環境構築が諸々苦戦しながら完成
さあ動いてくれメンス!

ログイン XAMPP数秒 → Docker1分
こりゃあかんw

原因

Qiitaにも100万記事くらい投稿されているけど、Laravelのアプリフォルダ全部Dockerにマウントさせると
vendorとかstorageみたいな子達が激重でこういうことになるらしい。

こちらの記事を参考にさせていただきました。
Docker for MacのLaravel アプリケーションのが遅い?それ、ファイルをいっぱいマウントしてるからかもです。
こちらの手順で全て解決しました。

何をやっているのかとか行き詰ったところがあったので備忘録として

作業の流れ

とりあえずdocker-compose.ymlを直してみる

docker-compose.yml
version: "3.7"

services:
  frontend:

    #省略

  backend:
    build: ./service
    tty: true
    volumes:
        - ./service:/var/www/laravel
    ports:
      - '8000:8000'
    env_file:
      - ./.env
  
    #省略

これに参考記事通り追加

docker-compose.yml
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が早くならないと何も解決していない。
多分同じ方法で早くなってくれるだろうと信じて。。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?