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

Barbara Streisand
リリース: 2024-10-24 10:28:02
オリジナル
1005 人が閲覧しました

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!