前回は、環境設定ファイルの内容について説明しました。今回は、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コンテナを使用して行います。
- WordPressのダウンロード
- WordPressのDB設定
- WordPressのインストール処理
- WordPressの言語環境インストール
- wp-config.phpの移動、パーミション設定
- wp-content ディレクトリ以下のパーミション設定
- bcacheの設定
- 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 について説明します。次回をお楽しみに。