MediaWikiの環境をdocker-composeで簡易的に構築する

# MediaWikiの環境をdocker-composeで簡易的に構築する

## 環境情報

2019/12/12時点

- MacOS X 10.15.1（19B88）
- Docker 19.03.5
- MediaWiki 1.33.1
- MySQL 5.7.28
    - 2019/12/12時点ではMySQLのコンテナは8.0.18が最新ですが、このバージョンだとMediaWikiの初期設定画面での操作でエラーが発生し正常に動作しなかったため、5.7.28のバージョンを利用しています。

## docker-composeのディレクトリ構成

```shell-session
.
├── db
│   └── mysql
│       └── var_lib_mysql
├── mediawiki
│   └── images
└── docker-compose.yml
```

## docker-compose.ymlの定義内容

```yaml
version: '3'
services:
  mediawiki:
    container_name: wiki
    image: mediawiki:latest
    restart: always
    ports:
      - 80:80
    volumes:
      - ./mediawiki/images:/var/www/html/images
  mysql:
    container_name: db
    image: mysql:5.7.28
    environment:
      #イメージの起動時に作成するデータベースの名前
      MYSQL_DATABASE: my_wiki
      #このユーザはMYSQL_DATABASE変数で指定されたデータベースに対してスーパーユーザとしての権限(GRANT ALL)を保持する
      MYSQL_USER: mysqluser
      #MYSQL_USERのパスワード
      MYSQL_PASSWORD: mysqluser00
      # MySQLにおけるスーパーユーザであるrootアカウントに設定するためのパスワード
      MYSQL_ROOT_PASSWORD: mysqluser000
    ports:
      - "3306:3306"
    volumes:
      - ./db/mysql/var_lib_mysql:/var/lib/mysql
```

## MediaWikiの初期設定をする

`docker-compose up -d`で起動したあと、下記手順を実行してMediaWikiの初期設定を行います。

### 1. MediaWikiにアクセスする

http://127.0.0.1

にアクセスすると`set up the wiki`というリンクのあるページが表示される。

<img width="598" alt="スクリーンショット 2019-12-11 20.18.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/39ae79d3-c68b-8eca-5e10-b648ec8820e7.png">

### 2. set up the wikiリンクをクリックする

### 3. 言語の選択画面で続行ボタンを押下する

<img width="785" alt="スクリーンショット 2019-12-11 20.23.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/58f45ec9-0304-14d5-99ba-e6bfd7f079fc.png">

### 4. MediaWikiへようこそ！画面で続行ボタンを押下する

![screencapture-127-0-0-1-mw-config-index-php-2019-12-11-20_27_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/e964f764-dfd6-0f91-c52f-f7e0a3bc9f83.png)

### 5. データベースに接続画面で以下の情報を入力して続行ボタンを押下する

- データベースのホスト
    - mysql （docker-compose.ymlで定義したmysqlのコンテナ）
- データベース名
    - my_wiki
- データベースのユーザー名
    - mysqluser
- データベースのパスワード
    - mysqluser00

![screencapture-127-0-0-1-mw-config-index-php-2019-12-12-07_39_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/c5de2748-e250-7fe4-beb5-91d5c8f4c51c.png)

### 6. データベースの設定画面で続行ボタンを押下する

<img width="1260" alt="スクリーンショット 2019-12-12 7.47.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/518db04c-c10a-fbb7-47da-8a3112156a80.png">

### 7. 名前の画面で値を設定し、続行ボタンを押下する

![screencapture-127-0-0-1-mw-config-index-php-2019-12-12-07_49_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/237f2fe0-685b-f98b-c265-e77e183a406c.png)

### 8. インストールの画面で続行ボタンを押下する

![screencapture-127-0-0-1-mw-config-index-php-2019-12-12-07_51_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/4f0d4bed-bbd1-acb7-cba5-1452df3f7f51.png)

### 9. インストールの確認画面で続行ボタンを押下する

![screencapture-127-0-0-1-mw-config-index-php-2019-12-12-07_52_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/e62b8cb8-2f0e-9528-877b-e33bf91a9a52.png)

### 10. LogalSettings.phpファイルのダウンロード

上記手順の続行ボタンを押下するとLocalSettings.phpファイルがダウンロードされるので、`./mediawiki/`配下にダウンロードする。

```shell-session
.
├── db
│   └── mysql
│       └── var_lib_mysql
├── mediawiki
│   └── images
│   └── LocalSettings.php  ←  ここに配置
└── docker-compose.yml
```

![screencapture-127-0-0-1-mw-config-index-php-2019-12-12-07_56_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/0d31b11a-7204-ce85-35e3-b0df7f245bca.png)

### 11. 一度`docker-compose down`を実行してコンテナを停止する

```shell
$ docker-compose down
```

### 12. docker-compose.ymlファイルにLocalSettings.phpのvolumes記述を追加する

```yaml
version: '3'
services:
  mediawiki:
    container_name: wiki
    image: mediawiki:latest
    restart: always
    ports:
      - 80:80
    volumes:
      - ./mediawiki/images:/var/www/html/images
      - ./mediawiki/LocalSettings.php:/var/www/html/LocalSettings.php ← この行を追加
```

### 13. docker-compose up -d でコンテナを再度起動する

```shell
$ docker-compose up -d
```

### 14. MediaWikiに再度アクセスする

http://127.0.0.1

![screencapture-127-0-0-1-mw-config-index-php-2019-12-12-07_56_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/a18f212e-67c1-134a-f601-4287e682bf0e.png)


以上の手順でMediaWikiをdocker-composeで簡易的に構築することができました。
MySQLが最新版の8で動作しないことで、原因調査に時間がかかってしまった。。。