自分のために、 WordPress で動作しているこのサイトをコンテナ化し、移行した手順をまとめておきます。
おそらく最大の難所は、データベースの移行でしょう。今回、当サイトの移行では以下のような手順を踏みました。
TCP ポート 8080 を解放
これは今回、データベースの移行は phpMyAdmin を使用して行うため、これに HTTP でアクセスするためのポートとして TCP ポートの 8080 番を使用するためです。
おそらく CentOS で構築されているほとんどのサイトの場合、firewalld で必要のないポートは閉鎖していると思われます。
firewall-cmd --zone=public --add-port=8080/tcp
上記のコマンドは、通常、public ゾーンのルールが適用されている前提ですが、不安な場合は、以下のコマンドで、各ゾーンの現在、適用されているルールを確認できます。これは、上記コマンドを実行して、8080 番を解放した設定が適用されているかの確認にも使います。
firewall-cmd --list-all
なお、これはデータベースを移行するための一時的な解放で、作業終了後、
firewall-cmd --zone=public --remove-port=8080/tcp
として、明示的に削除してもかまいませんし、システムを再起動すれば、元に戻ります
既存データベースの抽出
既存のデータベースのバックアップは以下のコマンドで行いました。
さほどデータ量がなければ、gzip で圧縮する必要はありませんが、それでも、数 M で納まることは希だと思いますので、圧縮した上で、かつ phpMyAdmin のコンテナのオプション UPLOAD_LIMIT をあげておくことは必須です。
mysqldump --single-transaction --add-drop-table -u [ユーザー名] -p [データベース名] | gzip -c > backup.sql.gz
移行の実施
ここまでの前準備が終わったら、いよいよ移行を始めます。なお、WordPress の動作に必要なファイルの移動、wp-config.php の書き換えは、以下のサイトを参考に事前に実施しておいてください。WordPress を手動でバージョンアップする方法になりますが、コンテナにどのファイルを持っていかなければならないかの参考になるはずです。
WordPress手動バージョンアップの方法と注意点 | サイト引越し屋さんそして、まずは今、サーバで動作している http デーモンを停止します。動いていると、ポートがかぶってコンテナが起動しません。一方、コンテナで動作するデータベースは、docker 内のプライベートネットワークでのみ通信可能なので、この時点でデータベースは停止する必要はありません。
http デーモンを停止したら、次にコンテナ立ち上げます。
docker compose --profile=Setup up -d
ブラウザでアクセスしてみて、応答が帰ってくることを確認したら、データベースのインポートのために phpMyAdmin にアクセスします。8080 番ポートに http でアクセスし、ログイン、データのインポートが終了したら
docker compose --profile=Setup down
docker compose up -d
として、コンテナ再起動します。これで移行は完了です。
コンテナで WordPress が動作していることを一通り確認できたら、ホスト上で動作しているデータベースも停止し、ホスト上で、http デーモン、およびデータベースが、起動時に自動起動しないよう設定してします。
サイトのバックアップ
ホストの移行まで試行していませんが、今のところ、バックアップは、docker 関連ファイルを作ったフォルダをまるごとバックアップすることで対応しています。
sudo tar cvzpf [バックアップファイル名] [バックアップ対象パス]
このバックアップファイルを持っていけば、 docker がインストールされたホストであれば、どこでも動く!…はず… d(^^;A