1
3

More than 1 year has passed since last update.

Windows環境でDocker+WordPressを爆速化

Last updated at Posted at 2022-07-21

Dockerが遅すぎます……

WordPress+docker-composeで開発環境を構築していますが、ページを更新するだけで30秒くらいかかります。
初めは私のPCが弱すぎるだけかと思いましたが、検索してみると同じような方が結構出てきました。

なぜDockerが遅くなるのか

例えば、以下のようにdocker-composeファイルのvolumesで同期処理を設定しているとします。
とあるブログ記事を参考に私が真似した設定です。

docker-compose.yml
version: '3'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3000:80"
    depends_on:
      - mysql
    env_file: .env
    volumes:
        - ./public:/var/www/html/

  mysql:
    image: mysql:5.7
    env_file: .env
    ports:
      - "3306:3306"

これだと、更新するたびwordpressフォルダpublic以下全体とdocker側の/var/www/htmlが毎回同期処理を行ってしまいます。

これがDockerを遅くしてしまう原因です。

wordpressフォルダ全体だとかなりのファイル数になりますので、これを最小限に減らせばいいということですね。

volumesの設定で同期を管理する

そこで変更したのがこちら。

docker-compose.yml
version: '3'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3000:80"
    depends_on:
      - mysql
    env_file: .env
    volumes:
        - wp_data:/var/www/html/
        - ./public/wp-content/themes/mytheme:/var/www/html/wp-content/themes/mytheme/

  mysql:
    image: mysql:5.7
    env_file: .env
    ports:
      - "3306:3306"

volumes:
  wp_data:

テーマフォルダのみ同期することを前提にした設定です。
mythemeをお使いのテーマフォルダ名に変更してください。

プラグイン開発などする場合は適宜パスを変更すればOKですね。

一番下でwp_dataというvolumesを作り、/var/www/html/を突っ込んでおきます。
テーマフォルダ内しか同期しませんので、それより上の階層の変更は見なくなりますので注意です。

私の場合、これだけで即時ページ更新されるくらいに早くなりました。

.wslconfigでWSL2使用メモリ容量の調整

さらに早くしたい場合には.wslconfigの中身を以下のように書き換えると良いそうです。

.wslconfigはエクスプローラーのアドレスバーに%UserProfile%と入力して表示されたフォルダ内に作ります。

.wslconfig
# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB 

# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB

Advanced settings configuration in WSL

何をしているかというと、WSL2を使用するためのメモリ容量を増やしているわけですね。
初期値は2Gに設定されているようなので、ご利用のPCメモリ容量と相談しながら、4G、8Gと上げてみてください。
swapはメモリがパンパンになったときにストレージと置き換えるために確保する容量です。

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