自分の作っているライブラリで、Wikipedia の API 叩けないよー的な話が来たので
MediaWiki を Docker で立てて検証しようと思ったところ、
これが面倒だったので記録しておきます。
検証用にローカルで立てた手順です。
手順
Docker Hub で引っ張ってこられる MediaWiki はバージョンが古く、バグが残っていたため、最新のものを使用するよう修正しました
mediawiki-docker を clone します
$ git clone https://github.com/wikimedia/mediawiki-docker.git
Dockerfile を修正します
私の場合は以下のように修正しています
diff --git a/Dockerfile b/Dockerfile index 5a4a8a4..115c32d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ -FROM debian:sid +FROM debian:latest MAINTAINER Gabriel Wicke <gwicke@wikimedia.org> # Waiting in antiticipation for built-time arguments # https://github.com/docker/docker/issues/14634 -ENV MEDIAWIKI_VERSION wmf/1.27.0-wmf.9 +ENV MEDIAWIKI_VERSION wmf/1.30.0-wmf.4 # XXX: Consider switching to nginx. RUN set -x; \
Pull Request 投げようかとも思いましたが同じような奴が放置されてました...
build します
$ docker build --rm -t mediawiki .
今回は検証のために立てただけなのでパスワードとかも適当です
MySQL 5.7.5 以上だと動かないみたい*1のでご注意ください (もしかしたら修正されている問題かも)
$ docker run -it -d -e MYSQL_ROOT_PASSWORD=pass --name mysql mysql:5.6 $ docker run -it -d -e MEDIAWIKI_RESTBASE_URL="http://localhost/api.php" --name mediawiki --link mysql -p 80:80 mediawiki
これでとりあえずアクセスはできるようになったはず
後は、UI に従ってインストールします
データベースに接続の画面で入力するデータベースのホストは localhost じゃないです
$ docker inspect -f '{{ .NetworkSettings.IPAddress }}' mysql
インストールが完了すると LocalSettings.php を移せと言われるので移します
$ docker cp ./LocalSettings.php mediawiki:/usr/src/mediawiki/ $ docker exec -u www-data mediawiki ln -s /usr/src/mediawiki/LocalSettings.php /var/www/html/LocalSettings.php
これでとりあえず動くはず
余談
MediaWiki コンテナを restart しようとすると失敗します
この場合は entrypoint.sh を修正します
$ docker cp mediawiki:/entrypoint.sh ./
diff --git a/entrypoint.sh b/entrypoint.sh index 37e7d33..40c14b9 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -115,7 +115,7 @@ EOPHP cd /var/www/html # FIXME: Keep php files out of the doc root. -ln -s /usr/src/mediawiki/* . +ln -sf /usr/src/mediawiki/* . : ${MEDIAWIKI_SHARED:=/data} if [ -d "$MEDIAWIKI_SHARED" ]; then
$ docker cp entrypoint.sh mediawiki:/ $ docker start mediawiki