つい先日(4日前)に最新版のDocker公式のコンテナイメージ 1.41.0 がリリースされているのを見つけたので、ローカルネットワークで運用している MediaWiki をアップグレードした。これまでのバージョンは 1.35.0。
まずは、データベースのバックアップをとる。データベースもMariaDBのDockerコンテナだ。
takatoh@unclemeat:~$ docker exec -it mywiki-db mysqldump -hlocalhost -P3306 -uroot -prootpass mywiki > mywiki.sql
mywiki-db がデータベースのコンテナ。このコンテナの中で mysqldump コマンドを実行して、mywiki.sql ファイルに書き込んでいる。mysqldump の -h オプションはホスト、-P はポート、-u はユーザ、-p はパスワード。-p と引数のあいだに空白を入れるとどういうわけかうまく行かない。
バックアップをとったら、いったんコンテナを止める。
takatoh@unclemeat:~$ cd docker-configuration takatoh@unclemeat:~/docker-configuration$ docker compose down
docker-compose.yml ファイルを書き換える。MediaWiki イメージのバージョンを1.35.0から1.41.0に書き換えるだけだ。
version: "3"
services:
mywiki:
image: mediawiki:1.41.0
container_name: mywiki
restart: always
depends_on:
- mywiki-db
volumes:
- "${CONTAINER_ENV_DIR}/mywiki/images:/var/www/html/images"
- "${CONTAINER_ENV_DIR}/mywiki/LocalSettings.php:/var/www/html/LocalSettings.php"
- "${CONTAINER_ENV_DIR}/mywiki/php.ini-production:/usr/local/etc/php/php.ini"
- "${CONTAINER_ENV_DIR}/mywiki/extensions/YouTube:/var/www/html/extensions/YouTube"
ports:
- 9090:80
mywiki-db:
image: mariadb:10.5.6-focal
container_name: mywiki-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: mywiki
MYSQL_USER: wikiuser
MYSQL_PASSWORD: wikipass
volumes:
- "${CONTAINER_ENV_DIR}/mywiki/db:/var/lib/mysql"
ports:
- 8836:3306
書き換えが終わったら、コンテナを起動する。
takatoh@unclemeat:~/docker-configuration$ docker compose up -d
問題なく起動したけど、ブラウザでアクセスするとエラーが出ていた。データベースのテーブルにカラムが見つからないらしい。MediaWiki のアップブレードでデータベースのスキーマも更新する必要があるようだ。↓このページが参考になった。
MediaWiki のディレクトリで更新スクリプトを実行すればいいようだ。MediaWiki は Dockerコンテナで動いているので、コンテナの中で実行する。
takatoh@unclemeat:~/docker-configuration$ docker exec -it mywiki bash root@a423a4fe2c67:/var/www/html# php maintenance/run.php update.php MediaWiki 1.41.0 Updater Your composer.lock file is up to date with current dependencies! Going to run database updates for bsl_wiki Depending on the size of your database this may take a while! Abort with control-c in the next five seconds (skip this countdown with --quick) ...0 ...collations up-to-date. (以下略)
無事、更新スクリプトが終了したら、念のためコンテナを再起動する。で、改めてブラウザでアクセスすると、今度はエラーなくページが表示された。
これで完了。