Docker で MediaWiki コンテナを作る方法
いろんな情報をまとめたりメモしたりするために、自由に使える wiki があると便利かもしれません。 Docker で MediaWiki のコンテナを作成してみましょう。
MediaWiki とは?
MediaWiki は無料のオープンソースの Wiki ソフトウェアです。 PHP で実装されています。 MediaWiki は、もともと Wikipedia にために作成されたもので、実際に Wikipedia で使用されています。 かなりなじみが深い wiki なのではないでしょうか。
Docker で MediaWiki コンテナを作る
Docker で MediaWiki のコンテナを作成してみましょう。
コンテナのイメージは、下記の公式イメージを使用します。
イメージのバージョン(タグ)は特にこだわりが無ければ最新版(latest
)で良いと思います。
MediaWiki は Web サーバー上で動作しますので、コンテナ側のポート番号は 80 番です。 ホスト側から Web ブラウザ(Chrome など)で接続できるよう、コンテナ側のポート 80 番へのマッピングを設定しましょう。 ホスト側のポート番号は、他で使用されていないものなら何番でも良いと思います。
version: "3.8" services: # MediaWiki コンテナ mediawiki: image: mediawiki:latest ports: - 8080:80
データベースを用意する
MediaWiki のデータはデータベースに保存されますが、 後述の MediaWiki のインストール時にテーブルなどが作成されるため、 先にデータベースを用意しておく必要があります。 データベースには MySQL(MariaDB)、SQLite のいずれかが使用できます。 ドキュメントでは PostgreSQL も使用できると書かれていたのですが、 何故かインストール時の画面で選べなかったので使えないのかもしれません(試していません)。
MySQL(MariaDB) を使用する
MySQL(MariaDB)を使用する場合は、MySQL コンテナを用意する必要があります。 MySQL コンテナを作成する方法は「Docker で MySQL コンテナを作る方法」を参考にしてください。
SQLite を使用する
SQLite を使用する場合は、データは MediaWiki コンテナの中にファイルとして保存されますので、 MediaWiki コンテナだけで動作させることができます。 SQLite のデータはデフォルトでは "/var/www/data" に保存されます。 MediaWiki コンテナを再作成したりした際にデータが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、 コンテナの外にファイルが保存されるようにしましょう。
version: "3.8" services: # MediaWiki コンテナ mediawiki: image: mediawiki:latest ports: - 8080:80 volumes: - ./mediawiki-data:/var/www/data
MediaWiki をインストールする
データベースの用意ができたら MediaWiki コンテナを起動しましょう。 MediaWiki のインストール画面が表示されますので、画面に従って設定しましょう。 データベースの設定や、管理者アカウントの設定などが必要になります。
設定ファイルを配置する
MediaWiki のインストールが完了すると、設定ファイル(LocalSettings.php)がダウンロードされます。 そのファイルを MediaWiki が読み込むように配置する必要があります。 配置先の場所は "/var/www/html/LocalSettings.php" になります。 バインドマウントなどを使用して配置しましょう。
version: "3.8"
services:
# MediaWiki コンテナ
mediawiki:
image: mediawiki:latest
ports:
- 8080:80
volumes:
- ./LocalSettings.php:/var/www/html/LocalSettings.php
- ./mediawiki-data:/var/www/data
正しく設定できていれば MediaWiki が使用できるようになります。
ファイルをアップロードできるようにする
デフォルトの状態ではファイルがアップロードできませんので、アップロードできるようにしてみましょう。
アップロードできるようにするには、設定ファイル(LocalSettings.php)で、
$wgEnableUploads
を true
にする必要があります。
ちなみにですが、ファイルのアップロードはログインしていないと使用できないので注意してください。
$wgEnableUploads = true;
なお、初期インストール時に「ファイルのアップロードを有効にする」にチェックを付けておくと、
$wgEnableUploads
が true
の状態で設定ファイル(LocalSettings.php)をダウンロードされます。
画像以外をアップロードする
デフォルトでは画像しかアップロードできませんので、
画像以外をアップロードしたい場合は、
設定ファイル(LocalSettings.php)の $wgFileExtensions
で、
アップロードを可能にするファイルの拡張子の一覧を指定する必要があります。
$wgEnableUploads = true;
$wgFileExtensions = array_merge($wgFileExtensions, ['docx', 'xlsx', 'pptx', 'pdf']);
アップロードファイルが消えないようにする
アップロードされるファイルは、デフォルトでは "/var/www/html/images" に保存されます。 MediaWiki コンテナを再作成したりした際にファイルが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、コンテナの外にファイルが保存されるようにしましょう。
version: "3.8"
services:
# MediaWiki コンテナ
mediawiki:
image: mediawiki:latest
ports:
- 8080:80
volumes:
- ./LocalSettings.php:/var/www/html/LocalSettings.php
- ./mediawiki-data:/var/www/data
- ./mediawiki-images:/var/www/html/images
ロゴ画像を変更する
ロゴ画像を変更するには、設定ファイル(LocalSettings.php)の $wgLogos
で、
ロゴ画像の URL のパスを変更する必要があります。
ファイルはアップロード機能でアップロードして使用しても良いですし、
バインドマウントなどでコンテナ内に配置したファイルを使用しても良いでしょう。
$wgLogos = [ '1x' => "$wgResourceBasePath/images/8/81/Example.jpeg", 'icon' => "$wgResourceBasePath/images/8/81/Example.jpeg", ];
タイムゾーンを変更する
デフォルトではタイムゾーンが UTC になっているので、日本だと表示される時間が9時間ずれます。
タイムゾーンを変更するには、設定ファイル(LocalSettings.php)の $wgLocaltimezone
を変更します。
$wgLocaltimezone = 'Asia/Tokyo';