`.wp-env.json`を試す

先日以下のような記事を拝見しました。

wp-envでWordPress開発環境迷子に終止符を – Photosynthesic blog

衝撃を受けたので自分でも手元のWin10マシンで試してみることにしました。

経緯は末尾の備考に記しまましたが、まずはDockerを以下URLからダウンロード、(再)インストールします。

>docker --version
Docker version 19.03.5, build 633a0ea

>docker-compose -v
docker-compose version 1.25.4, build 8d51620a

入りました。

ついでにチュートリアルを試します。

>docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete                                                                                             Digest: sha256:fc6a51919cfeb2e6763f62b6d9e8815acbf7cd2e476ea353743570610737b752
Status: Downloaded newer image for hello-world:latest

Hello from Docker!

## 略

動きました。OKですね。

次は公式ドキュメントに則って……と言いたいところですが、グローバルインストールはしたくなかったのでローカルインストールしてみます。

> cd PATH\TO\DIRECTORY\wp_env_test

それから、.wp-env.jsonを作成します。とりあえず動作試験だけなので中身はスカスカで。

{
    "core": null
}

準備ができたらインストール。

> npm i -D @wordpress/env

※今回のWin10マシンでは環境変数のユーザ環境変数のPath.\node_modules\.binが設定されているので、コマンドが認識される状態になっています。

インストールが完了したら、起動してみます。

>wp-env start

√ WordPress started. (in 89s 912ms)

ダウンロードから始まり、少しすると起動してきます。

>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES
AAAAAAAAAAAA        wordpress           "docker-entrypoint.s…"   53 seconds ago       Up 51 seconds       0.0.0.0:8889->80/tcp   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_tests-wordpress_1
BBBBBBBBBBBB        wordpress           "docker-entrypoint.s…"   53 seconds ago       Up 51 seconds       0.0.0.0:8888->80/tcp   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_wordpress_1
CCCCCCCCCCCC        mariadb             "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_mysql_1

docker psコマンドで起動中のコンテナを確認。上がっていますね。

この状態でブラウザでhttp://localhost:8888にアクセスすると……

TwentyTwentyの見慣れたWPサイトの初期画面
TwentyTwentyの見慣れたWPサイトの初期画面

見慣れたWPサイトの初期画面が表示されました。

ログイン画面
ログイン画面

http://localhost:8888/wp-login.phpでログイン画面にもアクセス。

初期ID、パスワードはadminpasswordのようなのでそれでログイン。無事ログインして、通常通りWordPressにアクセスできることを確認できました。

>wp-env stop
√ Stopped WordPress. (in 5s 937ms)

>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

wp-env stopで停止。

普通にやるとデータが消えますが、まあDockerですからね。

所感

軽く触っただけですが、今までサーバ建てたり環境設定したりしていたのがかなりシンプルになって良い感じだと思います。

DBやuploads、テーマの中身をローカルのファイルやDBを参照して起動できれば、コアアップデートの試験もローカルでできるのではないでしょうか?

仮にそうなれば開発だけでなくメンテナンスのコストも大幅に下げることができると思うので、多方面に良い影響があるのではないか、という期待と未来を感じました。

備考

ちなみに今回試験をしたWin10マシン、Docker for Windows並びにDocker Windows自体はだいぶ前からインストール済みではあったものの起動しようとするとNot enough memory to start Dockerで起動できず。

Docker Desktopを最新版までアップデートして色々と試してもダメだったのでDockerそのものを再インストールした、という経緯があるのですが再インストールしたらあっさり動いたので「今までの苦労は何だったのか……」となりました。

ついでに。

Not enough memory to start Dockerと出た場合はメモリ設定を下げると良いとのことです。マジか(上げていた人)。

今回はメモリ設定を上げていたところを再インストールで初期値にリセットされたことで解消されたのではないか、と思われます(ただ、初期値の2GBでもDockerが上がらなかったのでそれはそれで謎ですが)。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。