MySQLではなく、MariaDBでMovableTypeを構築する案件があり、
MovableTypeのテクニカルサポートに問い合わせたところ、
「MariaDB に関しては、現状では MySQL 互換であり、基本的な動作に支障はなく動作報告あり。
ただ、推奨環境外とのことで、100%動くことが保証されるわけではない。」ということで
じゃあDockerでさくっと試してみよう!ということでやってみました。
結論
以下のレポジトリにdocker-composeファイルやらなんやらをアップしています。
https://github.com/gk9187/docker-movabletype-mariadb
data/apache/MT配下にダウンロードしたMovableTypeを展開し
docker-compose build -> upすると、http://localhost/cgi-bin/
でMTの初期設定画面が閲覧できます。
データベースは初回起動時にdatabase/init.sqlを流し込んでいます。
docker-composeでwebからdbへlinkしているので、MTの初期設定時、
データベースの接続先(IP or HostName)はdbとすることで
名前解決できて接続できるようになっています。
perlのモジュールを色々入れる必要があるので、buildに結構時間が
かかります。
ちなみにMTは6.3.3で試しており、以下からダウンロードしました。
https://github.com/movabletype/movabletype/releases/tag/mt6.3.3
解説
環境
CentOS 6
DB MariaDB 5.5
MT 6.3.3で確認
Apache 5.4
※バージョンに縛りがあったので上記の通りにしましたが、
docker-hubにmariadbのイメージが上がっていたので、
本当はそっちを使った方がよいかも。。
https://hub.docker.com/_/mariadb/
全体図
コンテナ―として以下のようにWEBとDB2つ立ち上げています。
WEB
docker-composeファイルでは、webという名前をつけて80ポートを公開し
dbとリンクしているのみです。
DB
dockerを落としたあと、再起動するときにinit.sqlを流したくなかったので
init.shにそのあたりの処理を書いています。
初回接続時は/initializedというファイルをおいて、次回以降は
このファイルが存在したらinit.sqlを流さないようにしました。
総括
さくっとやるつもりが、mariadbを自分で構築するようにしてしまったのでさくっとは終わらなかった。
docker-hubで先に検索しておけばよかった。
docker-hubに挙がっているものは、指定ディレクトリに置いたファイルを自動でSQLとして実行してくれるみたいなので、今回の初期化sqlも流せたので。。
コンテナを削除するとデータがすべて消えて構築し直しになるので、
もし本運用するためにはデータの永続化を考えないといけない。
軽く情報収集した感じだと、
・volumeを使う。でもパーミッションで罠があるかんじ(マウントしたvolumeは1000:1000になる)
・データコンテナー?というのがあるらしい。
dockerを削除してもデータが消えずに他のコンテナからマウントできるとかなんとか
https://docs.docker.com/engine/tutorials/dockervolumes/#data-volumes
コンテナーのデータ永続化はそもそも性質的に向いてないし、
やろうとすると色々と難がありそう。