DockerHubのWordPressイメージにプラグインを追加する

DockerHubのWordPressイメージを立ち上げるのは非常に簡単ですが、WordPressの管理画面のGUIを使ったプラグインのインストールをしても再度コンテナを立ち上げ直すと消えるので独自の調整が必要です。

プラグインのインストール方法

方法は2つあって

  1. 事前にダウンロードして展開しておいたプラグインをADDする方法
  2. docker build時にRUNでプラグインファイルをダウンロードして解凍と展開を行う方法

があります。2つめの方がDockerfile上で完結するのでおすすめです。テーマファイルなどにも使えるかと思います。

Dockerfileの作成

以下のDockerfileは

  • Google Analytics for WordPress
  • Revision Control
  • Jetpack Markdown

をインストールする場合のサンプルです。一旦/tmp以下にプラグインのzipファイルをダウンロードしてからプラグインディレクトリに解凍しています。その後掃除をして終了です。

# 公式のWordPressイメージをベースにする
FROM wordpress
# これから使う`wget`と`unzip`を入れる
RUN apt-get update
RUN apt-get -y --force-yes -o Dpkg::Options::="--force-confdef" install wget unzip
# プラグインファイルの一時ダウンロード先
WORKDIR /tmp/wp-plugins
# プラグインファイルをダウンロード
RUN wget https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.5.5.zip
RUN wget https://downloads.wordpress.org/plugin/revision-control.2.3.2.zip
RUN wget https://downloads.wordpress.org/plugin/jetpack-markdown.3.9.6.zip
# プラグインをWordPressのプラグインディレクトリに解凍する
RUN unzip './*.zip' -d /usr/src/wordpress/wp-content/plugins
RUN chown -R www-data:www-data /usr/src/wordpress/wp-content
# 一時ダウンロード先内の全ファイルの削除
RUN rm -rf '/tmp/wp-plugins'
# 戻る
WORKDIR /var/www/html

ビルド

あとはこのようにbuildをして

docker build -t registry.example.com/my/wordpress:latest ./

プライベートレジストリにイメージをpushします

docker push registry.example.com/my/wordpress:latest

そして公式のWordPressイメージと同じように立ち上げるとプラグイン入りのWordPressが立ち上がります

docker run -e WORDPRESS_DB_HOST=db.example.com:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_NAME=hoge -e WORDPRESS_DB_PASSWORD=password --name hoge -d -p 8080:80 registry.example.com/my/wordpress:latest

プラグインの設定は基本的にはDBに残ると思うので、コンテナを立ち上げ直してもプラグインは起動した状態になっていると思います。

メモ

注意点としてベースのWordPressイメージが更新されるたびに自分のイメージをビルドし直す必要があるのと、プラグインが新しくなったら公式から新しいプラグインのURLを持ってきて修正した上で、これまたビルドし直す必要があります。

参考

http://tech-blog.tsukaby.com/archives/989

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA