ホームページ >データベース >mysql チュートリアル >ボリュームを使用せずに MySQL コンテナ内のデータ変更をコミットするにはどうすればよいですか?
MySQL コンテナへのデータのコミット
変更された MySQL コンテナを新しいコンテナにコミットしてデータベースの変更を永続化しようとしたときに問題が発生しました画像。 SQL ダンプをインポートして新しいデータベースを作成したにもかかわらず、更新されたイメージに基づいてコンテナーを実行すると、変更がデータベースに反映されません。
原因:
公式 MySQL イメージはボリュームを利用してデータを保存し、コンテナの有効期間を超えてデータを確実に保存します。ただし、ボリュームのあるコンテナをコミットする場合、データの変更は結果のイメージに含まれません。
解決策:
この問題を修正するには、独自のカスタム MySQL を作成します。ボリュームの使用を省略した基本イメージ。こうすることで、コミット処理中に追加されたデータが画像に埋め込まれます。このアプローチには注意事項があります。コミットされたイメージから生成されたコンテナーへの後続のデータ追加は、コンテナーの終了時に失われます。
変更された Dockerfile:
次の Dockerfileボリュームを使用せずにカスタム MySQL ベース イメージを作成する方法を示します:
<code class="dockerfile">FROM mysql:latest # Remove volume mounts RUN rm -rf /var/lib/mysql/*</code>
イメージの作成とコミット:
変更した Dockerfile を使用してカスタム ベース イメージを構築します:
docker build -t my-custom-mysql .
カスタム イメージに基づいて新しいコンテナを作成し、SQL ダンプをインポートします:
docker run --name my-custom-mysql -d my-custom-mysql docker exec -it my-custom-mysql bash mysql -uroot -psecret -e 'create database liferay_psat1;' mysql -uroot -psecret liferay_psat1 < /mnt/liferay_sql_dump.sql
インポートされたデータを組み込んで、コンテナを新しいイメージとしてコミットします:
docker commit -m "Imported liferay SQL dump" <container-id> jihedamine/mysql-psat1:v2
変更の確認:
更新されたイメージを使用してコンテナを実行し、データベースの内容を確認します:
docker run -ti jihedamine/mysql-psat1:v2 bash mysql -uroot -psecret # show databases;
「liferay_psat1」データベースは次のようになります。行った変更を反映して現在に表示されます。
以上がボリュームを使用せずに MySQL コンテナ内のデータ変更をコミットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。