Docker 公式イメージ、永続化した /var/lib/mysql ボリューム、明示的なバージョンタグを使用して、CasaOS に MySQL をインストールします。重要なデータベースで、古い 2023 年のスクリーンショットや浮動する latest タグに頼らないでください。
2026年9月現在、公式 Docker イメージでは MySQL 8.4 LTS に加えて、より新しい 9.x/イノベーション系の系列も公開されています。長期運用するセルフホストサービスでは、アプリケーションが新しいメジャーバージョンを明示的にサポートしていない限り、8.4 を互換性の基準として選ぶのが妥当です。
公式 MySQL イメージを使用する
現在のMySQL Docker 公式イメージは、Docker コミュニティと MySQL チームによって保守されています。
バージョンタグを意図的に選択する
次のような固定したメジャー/LTS タグを使用します:
mysql:8.4
無条件に従うのではなく latestこれにより、互換性の変更を伴う新しいメジャーリリースへ移行できます。
永続的な CasaOS 設定
-
イメージ:
mysql:8.4 -
コンテナポート:
3306 -
永続ボリューム: ホストの AppData パス →
/var/lib/mysql - MYSQL_ROOT_PASSWORD: 強力な初期 root パスワード
-
任意:
MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD
ポート 3306 をインターネットに公開しない
同じホスト上の別の Docker アプリが MySQL を必要とする場合は、両方のサービスを共有 Docker ネットワークに配置し、サービス名を使用します。3306 番ポートを公開する必要がないことも多いです。
root の代わりにアプリケーションユーザーを作成する
次を使用します MYSQL_DATABASE, MYSQL_USER、および MYSQL_PASSWORD 初回の初期化時に、アプリケーション専用のデータベースとアカウントを作成します。
root は管理と復旧用に残しておきます。
初回実行時の環境変数を理解する
公式イメージは、データディレクトリが空の場合にのみデータベースを初期化します。後からブートストラップ用環境変数を変更しても、既存のアカウントやデータベースは自動的に書き換えられません。
論理ダンプでバックアップする
移植性の高いバックアップには、次を使用します mysqldump または、MySQL が書き込み中にアクティブなデータベースファイルをコピーするのではなく、公式イメージに記載されたダンプ/リストアの方法を使用します。
サービス名で phpMyAdmin または別のアプリに接続する
共有 Docker ネットワーク上では、ウェブアプリは次のようなサービス名/コンテナホスト名を使って MySQL に接続できます mysql。別のコンテナ内では、 localhost そのコンテナ自体を指します。
Dockerネットワーキングガイドでは、そのコンテナネットワークモデルについて説明しています。
他のアプリを接続する前にMySQLの状態を確認する
初回起動後、すぐに本番アプリケーションをデータベースへ接続しないでください。コンテナログを確認し、MySQLの初期化が完了していて、再起動ループに陥っていないことを確認してください。
docker logs mysql
docker exec -it mysql mysqladmin -uroot -p ping
正常なサーバーは、初期データベース設定の完了後に応答するはずです。初回起動では、イメージがシステムテーブル、ユーザー、指定されたデータベースを作成するため、時間がかかる場合があります。
データをインポートする前に文字セットとタイムゾーンを計画する
アプリケーションには、特定の照合順序、文字セット、タイムゾーンに関する要件がある場合があります。既存のデータベースを移行する場合は、インポート前に旧サーバーのMySQLメジャーバージョンと設定を比較してください。
アプリケーションがMySQL 8.0でテストされていたからといって、コンテナが起動するだけでMySQL 9.xを自動的にサポートすると考えないでください。アプリケーションのベンダーが必要としているメジャーバージョンを固定してください。
データベース用ストレージを一般共有フォルダーから分離する
MySQLのデータファイルは、権限が一貫しており、遅延の低い、信頼できるローカルストレージに置いてください。配置しないでください /var/lib/mysql 容量が大きいというだけで、信頼性の低いSMBマウントやリムーバブルドライブに保存しないでください。
CasaOSホストにSSDと大容量HDDプールがある場合、SSDをデータベースの保存先にする方が適していることが多く、スケジュールされたダンプを大容量のバックアップストレージにコピーできます。
よくある質問
mysql:latestを使うべきですか?
本番に近いセルフホスティングでは、意図的にメジャー版またはLTSタグを指定してください。そうすれば、通常のpullでメジャーバージョンが予期せず上がることを防げます。
MySQLのデータはどこに永続化すべきですか?
ホストのAppDataフォルダーを次にマッピングします /var/lib/mysql.
ポート3306を公開する必要がありますか?
同じDockerネットワーク上の他のコンテナだけがデータベースを必要とする場合は、不要です。
コンテナ変数を編集すれば、後からMYSQL_ROOT_PASSWORDを変更できますか?
初期化後は、確実に変更できるとは限りません。既存のデータベースアカウントはMySQL自体から管理してください。
