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

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

前回は、環境設定ファイルの内容について説明しました。今回は、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カテゴリの最新記事