しばらく放置されていたWordPressのプラグインをメンテナンスする機会があったので、 WordPress公式のローカル環境構築ツール@wordpress/env (wp-env)を使ってみました。 ところが、起動時にmysqlcheckエラーがでてしまい使用できませんでした。 未だ詳細は不明なままですが、一先ず正常に起動できたのでまとめておきます。

使用しているバージョンは下記のとおりです。

  • docker: 20.10.6, build 370c289
  • node: 14.17.0
  • npm: 7.15.0
  • wp-env: 4.0.4
  • platform: Ubuntu 18.04.5 LTS

結論から言ってしまえば、みつけたブログ記事 1 のとおりwp-envが作成した ボリュームを再作成することで、正常に起動できました。

wp-envのインストールと起動

npm -g i @wordpress/env
wp-env start

マニュアル 記載のとおり、wp-envをインストールしてプラグインのディレクトリーで 起動したところ、下記のようなエラーが表示されました。

mysqlcheck: Got error: 1130: Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MariaDB server when trying to connect

dockerでコマンドで確認すると、コンテナは実行されています。

ブラウザーでlocalhost:8888に接続すると Error establishing a database connectionと 表示されており、データベースとの接続に失敗しているようです。

マニュアル記載のトラブルシューティング 2 を試してみましたが、 自分の環境では解決しませんでした。

そこで前述のブログ記事に記載されている方法を試してみます。

wp-envが作成したコンテナ名の確認

docker psのNAMES列を確認します。

                NAMES
e7350d785574a7063b9d44419e0eda6a_wordpress_1
e7350d785574a7063b9d44419e0eda6a_tests-wordpress_1
e7350d785574a7063b9d44419e0eda6a_mysql_1
e7350d785574a7063b9d44419e0eda6a_tests-mysql_1

ボリュームの再作成

上記の例でいうと~/wp-env/e7350d785574a7063b9d44419e0eda6a内にwp-envが コンテナ作成に使用したdocker-composer.ymlやDockerfileが格納されています。

このディレクトリーに移動して、docker-composeを使用して ボリュームを作成し直します。

cd ~/wp-env/e7350d785574a7063b9d44419e0eda6a

docker-compose down -v
docker-compose up -d

wp-envの再起動

プラグインのデータがあるディレクトリーに戻ってwp-envを起動します。

cd my-project
wp-env start

✔ Done! が表示されれば、正常に動作しています。

.wp-env.jsonの作成

WordPressプラグインやテーマを含むディレクトリーでwp-env startすると、 そのディレクトリーにあるプラグインもしくはテーマを環境内にマウントして 有効化します。

ただし、有効化に失敗した場合、データは環境にマウントされてもWordPressの 管理画面には表示されませんので、.wp-env.jsonを作成しておいた方が良さそうです。

{
    "core": null,
    "mappings": {
        "wp-content/plugins/my-plugin": "./my-plugin",
        "wp-content/themes/my-theme": "../my-theme"
    },
}

エラーの原因もwp-env startdocker-compose upの差がどの辺りにでるのかは わかりませんが、時間が取れれば調べてみたいと思います。

  1. How to Fix MariaDB Error 1130 with wp-env and Docker(greys.co) [EN] Feb 27, 2021 

  2. 試したのは、wp-envの再起動、Dockerの再起動、データベースのリセット、 wp-env destroy & wp-env startです。