KUSANAGI RoDの使い方(5) (高速Dockerの話)

宮﨑悟

RoDのconfigコンテナの役割について説明します。configコンテナは、kusanagiボリュームやDB内データの処理を行い、wpcliとkusanagi-configの2種類が存在します。wpcliコンテナはWordPress操作に関わるコマンドを含んだコンテナで、WordPressの導入や各種設定などを担当します。一方、kusanagi-configコンテナはLAMP環境やConcrete5環境などの設定を担当します。configコンテナの特徴として、shとして動作させることができ、より詳細な設定や操作が可能です。

前回は、環境設定ファイルの内容について説明しました。今回は、RoDにおけるconfigコンテナの役割について説明します。

configコンテナの役割

configコンテナは、常時起動するわけではなくコマンド実行時にのみ起動します。処理終了時にはコンテナを終了します。configコンテナには2つの役割があります。DocumentRootを始めとしたkusanagiボリュームの内容に関する処理と、DB内のデータの処理です。これらの動作はkusanagi-docker コマンドで行えます.

config コンテナには2種類あります。WordPress用の wpcli と、それ以外の環境用の kusanagi-config です。

wpcliコンテナ

wpcliコンテナは、WordPressの操作を行うwp-cli (wpコマンド)を含むコンテナです。wpコマンドを使用するため、PHP 7も含んでいます。

wpcli コンテナのビルド

kusanagi-docker コマンドで WordPress環境をprovisionすると、ターゲットディレクトリ以下にwpcli というディレクトリが作成されます。wpcli コンテナはそこでビルドしたコンテナイメージになります。

wpcliコンテナのベースは、wordpress純正イメージの wordpress:cli です。違いはPHPのmariadbの設定で、socketファイルを/var/run/mysqld/mysqld.sock に変更しているだけです。WordPressで内部にmariadbを持つ場合は、localhostがDBホストとして指定されます。その際のsocketファイルの位置が違うためにこのようなことをしています。

docker-compose.yml で 設定ファイルのみをmount する方法もありますが、WSLとDocker Desktop for Windows を使用する環境ではこの方法は使えません。そのため、wpcli コンテナをビルドするようにしています。

wpcli コンテナの役割

wpcli コンテナを一番多く使うのは、provision 時のWordPress導入時です。以下の導入手順をすべてwpcliコンテナを使用して行います。

  1. WordPressのダウンロード
  2. WordPressのDB設定
  3. WordPressのインストール処理
  4. WordPressの言語環境インストール
  5. wp-config.phpの移動、パーミション設定
  6. wp-content ディレクトリ以下のパーミション設定
  7. bcacheの設定
  8. KUSANAGI WPプラグインの導入

wpcliコンテナは、provision以外にも以下の機能を実行します。

  • DB情報のexport/import
  • Documentディレクトリのターゲットディレクトリ以下へのバックアップ・リストア
  • bcache 機能のon/off/cache clear
  • wp コマンドの実行

wp コマンドでは、WordPressに関わる様々な操作が可能です。以下に例を挙げます。

  • WordPressのアップデート
  • 言語パッケージの追加
  • プラグインの操作(追加・削除・有効化・無効化など)
  • テーマの操作(追加・削除・有効化・無効化など)
  • 投稿の操作(作成・削除・編集など)
  • コメントの操作(作成・削除・編集・モデレートなど)

詳しくはwpcliの公式サイトを参照してください。wpコマンドは、ターゲットディレクトリで kusanagi-docker wpに引数を追加して実行できます。

kusanagi-config コンテナ

kusanagi-configは、LAMP環境、Concrete5環境、Drupal環境におけるwpcli コンテナと同じ役割を行います。kusanagi-configはalpineベースのコンテナで、作成環境などを公開しています。

kusanagi-config には、mariadbclient と postgresql-client パッケージを予めインストールしています。それを使用して、以下の操作を行うことが可能です。

  • DB情報のexport/import
  • Documentディレクトリのターゲットディレクトリ以下へのバックアップ・リストア

config コンテナ の裏技

configコンテナはdocker-compose.yml で定義されたコンテナです。つまり、ターゲットディレクトリで以下のコマンドを実行することでshとして動作させることが出来ます。--rmオプションを付けることで、exitした際にコンテナを削除します。

$ docker-compose run --rm config sh
/var/www/html $ 

例えばMySQLに対する処理したい場合、上記sh内で以下コマンドによって実現できます。

$ mysql -u$DBUSER -p$DBPASS $DBNAME
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 241
Server version: 10.4.11-MariaDB-1:10.4.11+maria~bionic mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [JSHVL5xDl9]> 

終わりに

今回は、RoDにおけるconfigコンテナの役割について説明しました。次回はWordPress以外のprovision について説明します。次回をお楽しみに。

KUSANAGI RoDの使い方(1) >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解