Docker で MediaWiki コンテナを作る方法

この記事は最終更新日から 1年以上 が経過しています。

いろんな情報をまとめたりメモしたりするために、自由に使える wiki があると便利かもしれません。 Docker で MediaWiki のコンテナを作成してみましょう。

MediaWiki とは?

MediaWiki は無料のオープンソースの Wiki ソフトウェアです。 PHP で実装されています。 MediaWiki は、もともと Wikipedia にために作成されたもので、実際に Wikipedia で使用されています。 かなりなじみが深い wiki なのではないでしょうか。

mainpage.png

Docker で MediaWiki コンテナを作る

Docker で MediaWiki のコンテナを作成してみましょう。

コンテナのイメージは、下記の公式イメージを使用します。 イメージのバージョン(タグ)は特にこだわりが無ければ最新版(latest)で良いと思います。

MediaWiki は Web サーバー上で動作しますので、コンテナ側のポート番号は 80 番です。 ホスト側から Web ブラウザ(Chrome など)で接続できるよう、コンテナ側のポート 80 番へのマッピングを設定しましょう。 ホスト側のポート番号は、他で使用されていないものなら何番でも良いと思います。

例:ホスト側のポート 8080 番と、コンテナ側のポート 80 番をマッピングする場合
docker-compose.yml
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 コンテナを再作成したりした際にデータが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、 コンテナの外にファイルが保存されるようにしましょう。

例:バインドマウントを使用して、ホストの "./mediawiki-data" にデータを保存する場合
docker-compose.yml
version: "3.8"
services:

  # MediaWiki コンテナ
  mediawiki:
    image: mediawiki:latest
    ports:
      - 8080:80
    volumes:
      - ./mediawiki-data:/var/www/data

MediaWiki をインストールする

データベースの用意ができたら MediaWiki コンテナを起動しましょう。 MediaWiki のインストール画面が表示されますので、画面に従って設定しましょう。 データベースの設定や、管理者アカウントの設定などが必要になります。

setup.png install.png

設定ファイルを配置する

MediaWiki のインストールが完了すると、設定ファイル(LocalSettings.php)がダウンロードされます。 そのファイルを MediaWiki が読み込むように配置する必要があります。 配置先の場所は "/var/www/html/LocalSettings.php" になります。 バインドマウントなどを使用して配置しましょう。

download.png
例:ホストの "./LocalSettings.php" を、コンテナの "/var/www/html/LocalSettings.php" にバインドマウントする場合
docker-compose.yml
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 が使用できるようになります。

mainpage.png

ファイルをアップロードできるようにする

デフォルトの状態ではファイルがアップロードできませんので、アップロードできるようにしてみましょう。 アップロードできるようにするには、設定ファイル(LocalSettings.php)で、 $wgEnableUploadstrue にする必要があります。 ちなみにですが、ファイルのアップロードはログインしていないと使用できないので注意してください。

LocalSettings.php
$wgEnableUploads = true;

なお、初期インストール時に「ファイルのアップロードを有効にする」にチェックを付けておくと、 $wgEnableUploadstrue の状態で設定ファイル(LocalSettings.php)をダウンロードされます。

upload.png

画像以外をアップロードする

デフォルトでは画像しかアップロードできませんので、 画像以外をアップロードしたい場合は、 設定ファイル(LocalSettings.php)の $wgFileExtensions で、 アップロードを可能にするファイルの拡張子の一覧を指定する必要があります。

例:画像以外に「.docx」「.xlsx」「.pptx」「.pdf」をアップロードできるようにする場合
LocalSettings.php
$wgEnableUploads = true;
$wgFileExtensions = array_merge($wgFileExtensions, ['docx', 'xlsx', 'pptx', 'pdf']);

アップロードファイルが消えないようにする

アップロードされるファイルは、デフォルトでは "/var/www/html/images" に保存されます。 MediaWiki コンテナを再作成したりした際にファイルが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、コンテナの外にファイルが保存されるようにしましょう。

例:バインドマウントを使用して、ホストの "./mediawiki-images" にデータを保存する場合
docker-compose.yml
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 のパスを変更する必要があります。 ファイルはアップロード機能でアップロードして使用しても良いですし、 バインドマウントなどでコンテナ内に配置したファイルを使用しても良いでしょう。

例:ロゴ画像を "/images/8/81/Example.jpeg" に変更する場合
LocalSettings.php
$wgLogos = [
	'1x' => "$wgResourceBasePath/images/8/81/Example.jpeg",
	'icon' => "$wgResourceBasePath/images/8/81/Example.jpeg",
];

タイムゾーンを変更する

デフォルトではタイムゾーンが UTC になっているので、日本だと表示される時間が9時間ずれます。 タイムゾーンを変更するには、設定ファイル(LocalSettings.php)の $wgLocaltimezone を変更します。

例:タイムゾーンを "Asia/Tokyo" に変更する場合
LocalSettings.php
$wgLocaltimezone = 'Asia/Tokyo';

参考サイト

関連記事

様々な課題やタスクを管理するために、自由に使える課題管理システム(Issue Tracking System)があると便利かもしれません。Docker で Redmine のコンテナを作成してみましょう。Redmine とは?Redmine は、オープンソースのプロジェクト管理ソフトウェアです。Ruby on Rail ...
ほとんどの Web アプリではデータを保存する際に、データベースを使用しています。XAMPP では、データベースとして MySQL と互換性のある MariaDB が採用されていますが、Docker を使用するのであればせっかくなので MySQL のコンテナを作成してみましょう。Docker で MySQL コンテナを ...
データベースのソフトウェアとしては MySQL(MariaDB)が人気だと思いますが、PostgreSQL を使用しているサービスを見かけることもあるでしょう。Docker で PostgreSQL のコンテナを作成してみましょう。Docker で PostgreSQL コンテナを作るコンテナのイメージは、下記の公式イ ...
Docker の PHP コンテナで開発する際に、テスト用のメールサーバーを使用すると便利です。メールを外部に送信せずに、メールの動作確認を行うことができます。Mailpit とは?Mailpit はテスト用に開発されたメールサーバーです。Go 言語で実装されています。本物のメールサーバーのように振舞いながらも、メール ...
Docker は、構成を気軽に組み替えたりできるので、とても便利ですよね。Windows で Docker を使って開発している方も多いと思うのですが、個人的にはどうしても気が乗らない理由がありました。それは処理速度です。遅い。遅すぎる。めちゃくちゃ遅い。つらい。耐えられない。。。ということで調査しました。いろいろと調 ...

記事検索

最新記事

人気記事

RSSフィード

フィードバック

要望などあれば、お気軽にどーぞ。 不具合やバグを発見した場合も、連絡をいただけると助かります。

匿名でフィードバックする
匿名でフィードバックする

要望などあれば、お気軽にどーぞ。 不具合やバグを発見した場合も、連絡をいただけると助かります。

なお、このフォームから入力された内容について、管理者から返信はできませんので注意してください。 もし、管理者からの返信が必要であれば、X(旧 Twitter) もしくは、お問い合わせより、お願いします。