Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What is going on with this article?
@gk9187

dockerでMovableTypeを構築(MariaDB)

More than 3 years have passed since last update.

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つ立ち上げています。
docker-mt-abst.png

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

コンテナーのデータ永続化はそもそも性質的に向いてないし、
やろうとすると色々と難がありそう。

11
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
gk9187

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
11
Help us understand the problem. What is going on with this article?