つい先日(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. (以下略)
無事、更新スクリプトが終了したら、念のためコンテナを再起動する。で、改めてブラウザでアクセスすると、今度はエラーなくページが表示された。
これで完了。