1
2

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 3 years have passed since last update.

【Docker】Laravelのレスポンス改善

Posted at

はじめに

Docker上にLaravel環境を作成して開発をしていました。
なんてことないリクエストの処理に10秒程度かかることもあり、原因を調べてみたところDockerの設定に問題があるようなので対策をしました。

環境

  • Windows 10
  • Docker for Windows
  • PHP 8.0.3
  • Laravel 8.5.15

ディレクトリ構成

.
├── app # アプリケーションのソース(Laravel)
├── docker-compose.yml
└── infra # Dockerfile等の設定ファイル

原因

ホスト側のvendorディレクトリをマウント(バインドマウントと言うらしい)しているのが原因でした。

対策

名前付きボリュームを利用します。

docker-compose.yml
version: '3.5'

services:
  php:
    build: ./infra/php
    image: performance_test_fast
    container_name: performance_test_fast
    environment:
      VIRTUAL_HOST: 'fast.localhost'
      CERT_NAME: 'localhost'
    volumes:
      - ./app:/var/www/html
      - ./infra/apache/000-default.conf:/etc/apache2/sites-enabled/000-default.conf
      - vendor-store:/var/www/html/vendor # 追加
    networks:
      - performance-fast-network
      - proxy-network

networks:
  performance-fast-network:
    name: performance-fast-network
  proxy-network:
    external: true
    name: proxy-network

volumes:            # 追加
  vendor-store:     # 追加

結果

目で見てわかるレベルで速度が改善されました。

改善前 改善後
5100ms 137ms

最後に

今までとりあえず動けばいいやという感覚で設定していたので、これを機にDockerの設定ファイルの見直しをしていきたいと思います。

間違いや改善点があればコメントにて教えていただければ幸いです。

参考

ボリュームの利用
Docker の Volume がよくわからないから調べた
Docker Composeのvolumesを使ってもっと効率的に

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?