前回、Dockerを使ってWordPressのローカル開発環境を構築する記事を紹介しました。WordPress用のdocker-compose.ymlの作成とそのファイルをベースにdockerコンテナの操作方法の説明、実際にローカルに開発するときにdockerをホストしているPCとdockerコンテナをマウントして実際の開発を行う方法を紹介しました。

今回は開発に必ず必要というモノではないですが、あると便利なWP-CLIをdocker-compose.ymlに追加して実際に動かす方法を紹介します。

3回に渡って紹介したdockerを使ったWordPress環境の構築で使用したdocker-compose.ymlがこちらになります。

docker-compose.yml
version: '3.9'
services:
  wp:
    container_name: wp
    image: wordpress:php7.4
    restart: always
    working_dir: /var/www/html
    ports:
      - '8080:80'
    depends_on:
      - db
    volumes:
      - wpData:/var/www/html
      - ./my-theme:/var/www/html/wp-content/themes/my-theme
      - ./my-plugin:/var/www/html/wp-content/plugins/my-plugin
    environment:
      TZ: 'Asia/Tokyo'
      WORDPRESS_DB_HOST: 'db:3306'
      WORDPRESS_DB_USER: 'wordpress'
      WORDPRESS_DB_PASSWORD: 'wordpress'
      WORDPRESS_DB_NAME: 'wordpress_db'
      WORDPRESS_DEBUG: 1
  db:
    container_name: db
    image: mysql:8
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
    volumes:
      - dbData:/var/lib/mysql
    ports:
      - '3306:3306'
    environment:
      MYSQL_DATABASE: 'wordpress_db'
      MYSQL_ROOT_PASSWORD: 'wordpress'
      MYSQL_USER: 'wordpress'
      MYSQL_PASSWORD: 'wordpress'

volumes:
  dbData:
    driver: local
  wpData:
    driver: local

このdocker-compose.ymlにWP-CLIが入ったdockerイメージを追加します。

紹介する方法以外にもWordPressイメージを使ったDockerfileを作成しそこにWP-CLIをインストールする方法もありますが、dockerイメージをビルドするのが面倒なのと公式のWP-CLIが入ったイメージがあるのでそちらを使った方がローカル開発においては楽かなと思います。

docker-compose.ymlにWP-CLIのdockerイメージを追加する

以下のコードをdocker-compose.ymlのservice内に追加します。

  wpcli:
    container_name: wpcli
    image: wordpress:cli-php7.4
    working_dir: /var/www/html
    depends_on:
      - wp
      - db
    volumes:
      - wpData:/var/www/html
      - ./my-theme:/var/www/html/wp-content/themes/my-theme
      - ./my-plugin:/var/www/html/wp-content/plugins/my-plugin
    command: "--info"
    user: xfs

こちらの設定はwpコンテナやdbコンテナとつないでいてWP-CLIでデータベースの操作ができるようにしていてまたvolumesでwpコンテナと共有しています。WP-CLIを自身で開発したテーマやプラグインで操作した場合なんかも考慮してmy-themeやmy-pluginもマウントしています。my-themeやmy-pluginは必要に応じてマウントしてください。

docker-compose upしたときにWP-CLIが変な感じにならないよう起動時にはWP-CLIのバージョン情報を表示するようcommandに入れています。

通常、volumesでマウントしてないディレクトリのdockerコンテナ内のデータに別のdockerコンテナがアクセスするのはできないのですが、userにファイルシステムでxfsを入れると他のOSだとわかりませんが、Macだとアクセスすることができるようになります。この指定を入れることでWP-CLIで操作したファイルなどがwpコンテナでも操作できます。

docker-composeコマンドを使ってWP-CLIを操作する

追加したWP-CLIのdockerイメージを動かすにはこんなdocker-composeコマンドを使って動かします。まずは、WP-CLIのバージョン情報を表示する方法です。

バージョン情報を表示
$ docker-compose run --rm wpcli --info

上記のコマンドは「docker-compose run wpcli」でWP-CLIのdockerイメージを起動し実行します。「–rm」は起動後のdockerコンテナを削除するオプションでこのオプションを入れていないとコンテナが終了しても残り続けますのでオプションを付けています。

上記のコマンドの実行結果がこんな感じで表示されます。

OS:     Linux 4.19.121-linuxkit #1 SMP Thu Jan 21 15:36:34 UTC 2021 x86_64
Shell:
PHP binary:     /usr/local/bin/php
PHP version:    7.4.15
php.ini used:
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /var/www/html
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.4.0

似たような感じでインストールされているWordPressのバージョンも表示してみましょう。

WordPressのバージョンを表示
$ docker-compose run --rm wpcli core version
5.7

インストールされているWordPressのバージョンが表示されます。このようにdocker-composeコマンド経由でwpcliのコマンドが実行できるようになります。

まとめ

今回は、dockerで構築したWordPress環境にWP-CLIコマンドを追加してWP-CLIコマンドをdocker-compose経由で実行する方法を紹介しました。WP-CLIコマンドはWordPressの操作をコマンドラインからいろいろ出来るようにするパッケージですが、WP-CLIのdockerイメージからも操作出来るのでDockerfileを作ってdockerイメージをビルドするより楽にできます。