Dockerを用いたmediawikiのインストール

提供: GRN wiki
移動先: 案内検索


Docker imageの作成

synctree/mediawiki/のDockerfileを参考にして, 下記のようなDockerfileを作成する.

FROM php:5.6-apache

MAINTAINER GRN(modified from Synctree App Force)

ENV MEDIAWIKI_VERSION 1.27
ENV MEDIAWIKI_FULL_VERSION 1.27.1

RUN set -x; \
    apt-get update \
    && apt-get install -y --no-install-recommends \
        g++ \
        libicu52 \
        libicu-dev \
    && pecl install intl \
    && echo extension=intl.so >> /usr/local/etc/php/conf.d/ext-intl.ini \
    && apt-get purge -y --auto-remove g++ libicu-dev \
    && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install mysqli opcache

RUN set -x; \
    apt-get update \
    && apt-get install -y --no-install-recommends imagemagick \
    && rm -rf /var/lib/apt/lists/*

RUN a2enmod rewrite

RUN MEDIAWIKI_DOWNLOAD_URL="http://releases.wikimedia.org/mediawiki/$MEDIAWIKI_VERSION/mediawiki-$MEDIAWIKI_FULL_VERSION.tar.gz"; \
    set -x; \
    mkdir -p /usr/src/mediawiki \
    && curl -fSL "$MEDIAWIKI_DOWNLOAD_URL" -o mediawiki.tar.gz \
    && tar -xf mediawiki.tar.gz -C /var/www/html --strip-components=1 

# make mediawiki.conf
RUN echo '<Directory /var/www/html/>\n  RewriteEngine On\n  RewriteBase /\n  RewriteRule ^index\.php$ - [L]\n  RewriteCond %{REQUEST_FILENAME} !-f\n  RewriteCond %{REQUEST_FILENAME} !-d\n  RewriteRule . /index.php [L]\n</Directory>\n\n<Directory /var/www/html/wiki/images>\n  # Ignore .htaccess files\n  AllowOverride None\n\n  # Serve HTML as plaintext, dont execute SHTML\n  AddType text/plain .html .htm .shtml .php\n\n  # Dont run arbitrary PHP code.\n  php_admin_flag engine off\n</Directory>\n' > /mediawiki.conf

RUN cp /mediawiki.conf /etc/apache2/
RUN echo Include /etc/apache2/mediawiki.conf >> /etc/apache2/apache2.conf

#COPY docker-entrypoint.sh /entrypoint.sh
#ENTRYPOINT ["/entrypoint.sh"]
CMD ["apache2-foreground"]


作成したなら,Dockerのビルドコマンドを実行する.

docker build -t grn/mediawiki:1.27 .


groongaのインストール

日本語における全文検索を行いたいので,mroongaをインストール

docker run --name=mediawiki_mroonga \
  -v /home/docker/mediawiki_grn/mroonga_data/:/var/lib/mysql \
  -v /etc/localtime:/etc/localtime:ro \
  -d groonga/mroonga:latest

mroongaにはrootにパスワードが設定されていないため,設定する

まず,mroongaサーバのIPアドレスを確認

docker inspect --format '{{ .NetworkSettings.IPAddress }}' mediawiki_mroonga
192.168.1.10
#mysql -u root -h 192.168.1.10

mysql> update mysql.user set password=password('rootパスワード') where user = 'root';
mysql> flush privileges;
mysql> exit;
#上記のコマンドを実行すると下記のようなログが返ってくる
MySQL [(none)]> update mysql.user set password=password('rootパスワード') where user = 'root';
Query OK, 5 rows affected (0.01 sec)
Rows matched: 5  Changed: 5  Warnings: 0

MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

LocalSettings.phpを生成するために,grn/mediawikiを起動

docker run --name mediawiki_inst \
  -p 9082:80 \
  -d grn/mediawiki:1.27

WEBブラウザで接続して,LocalSettings.phpをダウンロードする.


本番用のmediawikiを生成する

永続的なファイルを保存するために,フォルダを作成する.

mkdir -p /home/mediawiki/config
mkdir -p /home/mediawiki/images
mkdir -p /home/mediawiki/extensions
mkdir -p /home/mediawiki/skins

hostnameはサイトURLに置き換えてください.

docker run --name mediawiki \
  -p 8081:80 \
  -v /home/mediawiki/config/LocalSettings.php:/var/www/html/LocalSettings.php \
  -v /home/mediawiki/images:/var/www/html/images \
  -v /home/mediawiki/extensions:/var/www/html/extensions \
  -v /home/mediawiki/skins:/var/www/html/skins \
  -v /etc/localtime:/etc/localtime:ro \
  -e VIRTUAL_HOST=hostname \
  -d grn/mediawiki:1.27