ホームページ  >  記事  >  データベース  >  ボリュームを使用せずに MySQL コンテナ内のデータ変更をコミットするにはどうすればよいですか?

ボリュームを使用せずに MySQL コンテナ内のデータ変更をコミットするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 10:28:021006ブラウズ

How to Commit Data Changes in a MySQL Container Without Using Volumes?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。