MacのDocker環境でmt-devを構築する
概要
Dockerを利用し、mt-devでMovable Type(以下MT)のローカル環境を構築する手順について解説しています。
筆者の環境はM3チップのMacですが、Dockerを利用するのでIntelチップのMacや多少古いOS、Windowsでも同じように構築できるかと思います。
mt-devの詳細については、以下リポジトリのReadMeもご参考ください(リンクは日本語のReadMe)
構築環境について
- MacBook Air(M3チップ)
- macOS Sequoia 15.5
- Git 2.48.1(Homebrewで入れているけど、Macに標準でインストールされているものでもOK)
- make 3.81(Macに標準でインストールされているもの)
- Perl v5.34.1(同上)
- Docker Desktop 4.43.1 (198352)
MT本体ファイルは、公式サイトの規約に則ってあらかじめzipファイルを取得しておきます。
インストール手順
①リポジトリからmt-devをクローンして/mt-devに移動
git clone git@github.com:movabletype/mt-dev.git mt-dev
cd mt-dev
②/mt-dev/archiveに取得したzipファイルを格納。本記事ではMT-8.4.2.zipを格納。
③以下コマンドを実行(途中エラーが出たので、sudoをつけてやり直した)
make up ARCHIVE=MT-8.4.2.zip
(あるいは)sudo make up ARCHIVE=MT-8.4.2.zip
処理にすこし時間がかかります。細かい部分は割愛しますが、最終的に以下が起動できていたらOKです。
✔ Container mt-memcached-1 Started
✔ Container mt-mt-watcher-1 Started
✔ Container mt-mt-1 Started
✔ Container mt-db-1 Running
✔ Container mt-httpd-1 Started
④DBを作成する
make exec-mysql SQL='CREATE DATABASE mt /*!40100 DEFAULT CHARACTER SET utf8mb4 */'
(あるいは)sudo make exec-mysql SQL='CREATE DATABASE mt /*!40100 DEFAULT CHARACTER SET utf8mb4 */'
⑤環境構築完了
http://localhost/cgi-bin/mt/mt.cgi にアクセスして、ユーザー作成など行う
構築手順は以上です。
起動/終了コマンド
#終了コマンド
make down
#次回起動時
make up ARCHIVE=MT-8.4.2.zip
(あるいは)sudo make up ARCHIVE=MT-8.4.2.zip
[補足]起動時に「The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested」という表示が出る場合
Appleシリコン製Macの場合、make upコマンドで起動時に以下のエラー表示が出ることがあります。筆者はhttpdとmtで確認しました。
[+] up 7/7... Starting 0.2s
✔ Contain... Started 0.3s
✔ Contain... Started 0.3s
✔ Contain... Started 0.3s
✔ Contain... Started 0.3s
✔ Contain... Running 0.0s
! httpd The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 0.0s
! mt The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 0.0s
Intel環境向け(linux/amd64)にビルドされたDockerイメージを、Appleシリコン製MacやARM64環境(linux/arm64/v8)で動かそうとした際にこの表示がされます。
実際のところ、このままでもローカル環境でMTは問題なく動きます。ただ、make upするたび毎回表示が出てくるのはちょっと…という場合は、mt/common.ymlにすこし追記をしてエラー表示が出ないようにすることも可能です。
services:
mt:
+ platform: linux/amd64
build:
...
@@
httpd:
+ platform: linux/amd64
build:
...
表示が出るイメージ(今回はmtとhttpd)の項目にそれぞれplatform: linux/amd64を追加します。
プラグインやテーマを追加する
プラグインやテーマは/mt-dev/repoに格納します。ただしそのまま格納するのではなく、以下のディレクトリ構成にして格納します。
# プラグインの場合
/mt-dev
└/repo
└[プラグイン名] ←`make up`コマンド入力時にオプションで指定する名称(以下起動コマンド参照)
├/mt-static
│└/plugins
│ └[プラグインフォルダ]
└/plugins
└[プラグインフォルダ]
# テーマの場合
/mt-dev
└/repo
└[テーマ名] ←`make up`コマンド入力時にオプションで指定する名称(以下起動コマンド参照)
└/themes
└[テーマフォルダ]
具体的に以下のイメージです。/mt-dev/repo直下に作成するディレクトリは任意の名称で問題ないと思いますが、プラグインやテーマの名称に合わせておく方が無難かと思います。
# MTAppjQueryの場合
/mt-dev
└/repo
└/MTAppjQuery
├/mt-static
│└/plugins
│ └/MTAppjQuery ← ←mt-staticに置くプラグインリソース
└/plugins
├/ScheduleField ←各種プラグイン本体ディレクトリ(以下同)
├/PlainTextField
├/MTAppjQuery
└/DataAPIProxy
# PageButeの場合
/mt-dev
└/repo
└/PageBute ←ディレクトリを作成
└/plugins
└/PageBute ←プラグイン本体ディレクトリ
起動はmake upコマンド入力時にREPO=[プラグイン名(テーマ名)]をオプションとして指定します。指定するのは/mt-dev/repo直下のディレクトリ名。
複数指定の場合は、REPO=[プラグイン名(テーマ名)1],[プラグイン名(テーマ名)2],...のようにカンマ区切りで指定します。
# コマンド指定例
make up ARCHIVE=MT-8.4.2.zip REPO=PageBute,MTAppjQuery,sample_theme
(あるいは)sudo make up ARCHIVE=MT-8.4.2.zip REPO=PageBute,MTAppjQuery,sample_theme
管理画面のプラグイン一覧やテーマ一覧を確認し、一覧に表示されていればOKです。
.envファイルで起動コマンドを簡略化する
/mt-dev内に.envファイルを作成し以下を記述しておくと、make upコマンド入力時のARCHIVEやREPOオプションを省くことができます。
ARCHIVE=MT-8.4.2.zip
REPO=PageBute,MTAppjQuery,sample_theme
#起動コマンドはこれだけ
make up
MTのアップデートについて
mt-devでMTをアップデートするときは、/mt-dev/archiveフォルダに最新のzipファイルを入れ、make upコマンドのARCHIVEオプションで新しいファイル名を指定します。
.envファイルを作成している場合は記述されているファイル名を修正し、make upコマンドを実行します。
管理画面内のバージョン表記が新しいものに変わっていたらOKです。
本記事の内容は以上です。
Discussion