【開発環境 #7】WordPress開発環境を構築する【WSL2,Docker】

DockerでWordPress開発環境を構築していきます。

環境
Windows
10 home (20H2)
WSL
2
Ubuntu
20.04 LTS
Docker Desktop for Windows
3.5.2 (66501)

Docker イメージの選定

Docker Hubへアクセスし、使用したいイメージ名で検索します。

WordPress

  1. Docker Hubの上部検索フォームでWordPressと検索
  2. 検索結果からWordPress ✓Official Imageを選択
  3. タブメニューのTagsをクリックし任意のバージョンを選択する
    1. 今回はphp7.4-apache
  4. 画面に表示されているwordpress:php7.4-apacheが使用するイメージ名

phpMyAdmin

WordPressと同じです。今回は最新版であるphpmyadmin:latestを使用します。

MariaDB

検索方法はWordPressと同じです。今回はmariadb:10.5を使用します。

ビルドコンテキスト

Ubuntuの/home/dev/wpをビルドコンテキストとします。最終的に以下の構成になります。

home/dev/wp
|-- docker/
|   `-- php-apache/
|       |-- Dockerfile
|       `-- php.ini
|-- src/
`-- docker-compose.yml

Dockerfile

コンテナwordpress:php7.4-apacheで、ComposerとWP-CLIの使用したいので、マルチステージビルドを使用したDockerfileを作成します。

FROM wordpress:php7.4-apache

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY --from=wordpress:cli-php7.4 /usr/local/bin/wp /usr/local/bin/wp
COPY ./php.ini /usr/local/etc/php/conf.d/z-php.ini

RUN pecl install xdebug-3.1.1 && \
    docker-php-ext-enable xdebug && \
    rm -r /tmp/pear

php.ini

php.iniのコピー先は、コンテナ先で設定が上書きされるのを防ぐために、このような記述にしています。(conf.d/内の*.iniファイルが、アルファベットで上書き結合されるため)

docker-compose.yml

version: '3.8'

services:
  web:
    build: ./docker/php-apache
    ports: 
      - 8080:80
      - 9003:9003
    volumes:
      - ./src:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DEBUG : 1
      WORDPRESS_CONFIG_EXTRA: |
        define('SAVEQUERIES', true);
        define('WP_POST_REVISIONS', false);
        define('WP_DEBUG', true);
        define('_PREFIX', 'my_');
    tty: true
    stdin_open: true
    depends_on:
      - db

  phpmyadmin:
    image: phpmyadmin:latest
    ports:
      - 8081:80
    environment:
      PMA_HOST: db:3306
      PMA_USER: wordpress
      PMA_PASSWORD: wordpress
    depends_on:
      - db

  db: 
    image: mariadb:10.5
    ports:
      - 3306:3306
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-time-zone=Asia/Tokyo
    volumes: 
      - db_data:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: password
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: wordpress
      TZ: Asia/Tokyo
        
volumes:
    db_data:

環境変数 (environment)

environmentWORDPRESS_DB_HOSTなどの意味は、Docker Hub > WordPressイメージHow to use this imageに詳しく書かれています。他のイメージも同様です。

コンテナ作成&起動

$ docker-compose up -d

Creating network "php_default" with the default driver
Creating volume "php_db_data" with default driver
.....
Creating php_db_1 ... done
Creating php_web_1        ... done
Creating php_phpmyadmin_1 ... done

動作確認

http://localhost:80にアクセスで、docker-compose.ymlで指定した通り、すでにWordPressのインストールが済んでいるのが確認できました。

終わりに

前回とほぼ同じ内容でしたが、無事にWordPressの開発環境が整いました。