WP-CLIのDocker公式イメージ「wordpress:cli」の使い方

★★★ Live配信告知 ★★★

第4回のPS Live配信は、昨年のCloudNative Days Tokyo 2020で、OSSのAPIGatewayでおなじみKongが開発する、サービスメッシュのKumaについて発表を行った槌野が、再びKumaについて語ります!
【2021/6/25(金) 17:00〜17:30】Kumaでメッシュなマイクロサービス リターンズ

この記事ではWP-CLIのDocker公式イメージを使用する方法についてまとめています。

WP-CLIとは

WP-CLIとはオープンソースのCMSであるWordPressをコマンドラインで操作するためのツールです。

GUIベースの操作は直感的でわかりやすいですが、コマンドさえ知っていればGUIよりも素早く実行でき、スクリプトに組み込めば自動化もできるのでCUIも何かと便利です。例えばプラグインのアップデートを定期実行したり、複数サイトの同じ作業を一括で処理できたりします。

WP-CLIは以下から提供されています。

公式サイト: https://wp-cli.org/ja/

 

このWP-CLIを使うための公式コンテナイメージが公開されているので、今回はこちらを使用してみたいと思います。

wordpress:cliの仕組み

wordpress:cliは以下から提供されています。

WordPressのdockerイメージ: https://hub.docker.com/_/wordpress

以下は上記docker hubのreadmeの抜粋です。

wordpress:cliにはWordPress本体がインストールされていません。が、WP-CLIはWordPressのインストールデータを直接触るものではなく、WordPress本体の機能を呼び出すものなのでWordPressがインストールされていないと使用できません。

なのでこのイメージではWordPress本体がインストールされているディレクトリをマウントする必要があります。上記の例では「–volumes-from」と「–network」で指定しています。

wordpress:cliはCMDでWP-CLIを実行するwpコマンドを待ち受けており、コンテナビルド時にサブコマンドを指定することでWP-CLIコマンドを実行しています。上記の例では「user list」を指定しているのでコンテナ内で「wp user list」が実行されます。

コマンド実行後、コンテナは終了します。コマンド発行の度にコンテナを使い捨てるイメージです。

docker-composeでの使い方

docker runで実行するのは公式readmeで説明されているので、ここではdocker-composeでの使いかたを説明します。

以下がdocker-compose.ymlの例です。

 

cliコンテナに絞って解説します。WordPressイメージの使い方については以下を参照してください。

【連載】世界一わかりみが深いコンテナ & Docker入門 〜 その4:docker-composeってなに? 〜

WordPressコンテナのボリュームをマウントします。wordpressで指定していますが、WordPressコンテナのデフォルトのインストールディレクトリは「/var/www/html」です。

 

デフォルトのコマンドとして「–info」を与えています。wpコマンドは引数なしでは動かないため、サブコマンドを与えなかったときにおかしな動作をしないように指定しています。

 

実行ユーザを指定します。これはwordpress:latestとwordpress:cliのディストリビューションが異なために必要になります。wordpress:latest(WordPress本体)はdebianですが、wordpress:cliはalpineで作られています。これら2つのディストリビューションでは各ユーザに割り当てられるUIDが異なります。WordPressの操作にはwww-dataというユーザが使われますが、wordpress:cliでwww-dataを実行ユーザに指定しても、操作するのはWordPress本体のディレクトリになります。UIDが異なるのでalpineで実行ユーザを指定してもdebian側では別のユーザだと認識されてしまいます。なのでwordpress:cliではdebianのwww-dataと同じUIDのユーザを指定する必要があります。WordPress本体(debian)側のwww-dataと同じUIDなのがcli(alpine)側のxfsというユーザなのです。

なので対策としてはこのように実行ユーザをxfsに指定するか、WordPress本体側もalpineのイメージを使用するかのどちらかとなります。

 

環境変数を指定します。環境変数に指定するべきものは「WordPressコンテナと同じ環境変数」です。2021年3月以前はWordPressコンテナからこの値を取得していたのですが、アップデートに伴い自身に与えられた環境変数を参照する仕様になっています。

 

以下のコマンドでWP-CLIを実行できます。

Kubernetesでは使えない?

Kubernetesで使用する方法については色々と試行錯誤しましたが、公式イメージはKubernetesと相性がよくありません。

wordpress:cliはコマンド実行の度にPodを使い捨てる仕様になっています。しかし、Kubernetesにはコンテナを使い捨てるという発想がありません。そのため、使用後もPodが残ってしまい、実行の度に完了状態のPodが増えていくことになります。また、1つのコンテナを何度も起動するという想定がないため、マニフェストファイルに実行ごとに引数を与えられません。

スクリプトを使えば解決できないこともありませんが、そこまでして使う意味はないように思います。

KubernetesでWordPressとWP-CLIを使いたければ、WP-CLIをインストールしたイメージを作るのが一番良いのではないでしょうか。

まとめ

この記事ではWP-CLIのDocker公式イメージをdocker-composeとKubernetesで使用する方法についてまとめました。

Kubernetesでの使用についてはまだ課題が多いようです。

最後までお読みいただきありがとうございます。





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*


6 + two =