このあいだの、MediaWiki のデータベースとして MariaDB を採用したわけだけど、バックアップのために dump するには MySQL と同じように mysqldump が使える。
こんな感じ:
$ mysqldump -P 3306 -u root -p testwiki > testwiki.sql
takatoh's blog – Learning programming languages.
このあいだの、MediaWiki のデータベースとして MariaDB を採用したわけだけど、バックアップのために dump するには MySQL と同じように mysqldump が使える。
こんな感じ:
$ mysqldump -P 3306 -u root -p testwiki > testwiki.sql
ローカルネットワークで wiki を運用してるんだけど、Docker 上に移行すべく、今日はそのテスト。
MediaWiki も MariaDB も Docker Hub に公式イメージが有るのでそれを使わせてもらう。データベースは、はじめは MySQL を試したんだけどうまく動かなかった(原因不明)ので MariaDB に変えた。
用意した構成はこんなの:
takatoh@apostrophe:testwiki$ tree . . ├── docker-compose.yml ├── mysql │ └── db └── wiki └── images
docker-compose.yml はこう:
version: '3' services: testwiki: container_name: testwiki image: mediawiki:1.35.0 restart: always ports: - 8888:80 volumes: - ./wiki/images:/var/www/html/images # - ./wiki/LocalSettings.php:/var/www/html/LocalSettings.php mysql: container_name: db image: mariadb:10.5.6-focal restart: always environment: MYSQL_ROOT_PASSWORD: rootpasswd MYSQL_DATABASE: testwiki MYSQL_USER: mysqluser MYSQL_PASSWORD: mypassword ports: - 3306:3306 volumes: - ./mysql/db:/var/lib/mysql
コメントアウトしてある行は MediaWiki の設定ファイル。これはインストールが済んでから使う。
docker-compose
コマンドでコンテナを起動する。
takatoh@apostrophe:testwiki$ docker-compose up -d
ブラウザで http://localhost:8888/ にアクセスして MediaWiki のインストール(というかセットアップというか)をする。その際、データベース関係は docker-compose.yml の記述に合わせる。
その他はそれなりに設定すればいい。最後に LocalSettings.php ファイル(設定ファイル)をダウンロードしてインストールは終わり。
いったんコンテナを止める。
takatoh@apostrophe:testwiki$ docker-compose down
ダウンロードした設定ファイルを配置。
takatoh@apostrophe:testwiki$ cp ~/Downloads/LocalSettings.php wiki
docker-compose.yml のコメントをはずす(該当行だけ示す)。
- ./wiki/LocalSettings.php:/var/www/html/LocalSettings.php
コンテナを再起動。
takatoh@apostrophe:testwiki$ docker-compose up -d
これで無事起動した。
旧い wiki からデータを移行する手順。
wiki.sql ファイルを Docker コンテナと共有しているディレクトリにコピーする。
takatoh@apostrophe:testwiki$ cp wiki.sql ./mysql/db
./mysql/db ディレクトリは、データベースの Docker コンテナ(コンテナ名は db)からは /var/lib/mysql として認識されている(前述の docker-compose.yml ファイルを参照)。なのでデータベースのコンテナに接続して、データを流し込む。
takatoh@apostrophe:testwiki$ docker exec -it db bash root@007d71dfcb37:/# cd /var/lib/mysql root@007d71dfcb37:/var/lib/mysql# ls *.sql wiki.sql root@007d71dfcb37:/var/lib/mysql# mysql -u mysqluser -p testwiki < wiki.sql Enter password: root@007d71dfcb37:/var/lib/mysql# exit exit
これでデータベース側での作業は終了。ただ、このままだと MediaWiki でエラーになる。バージョンが上がっているので MediaWiki の使用するデータベーススキーマとかも変わっているからだ。
そこで、MediaWiki のコンテナに接続して更新スクリプトを実行する。更新スクリプトは /var/www/html/maintenance/update.php だ。
takatoh@apostrophe:testwiki$ docker exec -it testwiki bash root@f92dd50471e5:/var/www/html# cd maintenance root@f92dd50471e5:/var/www/html/maintenance# php update.php
これで完了。
11/7、本番環境も無事 Docker 上に移行した。