質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1917閲覧

コンテナ内で保存したファイルのホスト上の保存先

kobayashy_kazu

総合スコア18

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2022/04/14 06:00

前提

docker内で立ち上げたMysqlのスキーマAのデータをdumpして、スキーマBにリストアしている。

質問

コンテナ内で作成したdumpファイルのホスト上の保存先を知りたい

試したこと・意図

コンテナ内では、dumpファイル(dump.sql)を確認することできるが、ホスト上ではどこにも該当のファイルが見当たらない。

取り組んだこと

・以下のymlファイルを使用してコンテナ立ち上げ

・スキーマAを編集、データの追加

・コンテナに入る

docker container exec -it icd_mysql bash


・dumpファイルの作成

mysqldump -u root -p icd_mysql > dump.sql


lsでdumpファイルの確認

コンテナ内に"dump.sql"ファイルがあることを確認する

コンテナを出る
exit

マウント元となっているdataディレクトリ配下でls

"dump.sql"ファイルがない


■docker-compose.ymlファイル

version: "3" services: # MySQL db: container_name: icd_mysql image: mysql:5.7 hostname: localmysql ports: - 3306:3306 volumes: - ./docker/db/data:/var/lib/mysql - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf networks: backend: environment: MYSQL_DATABASE: *** MYSQL_USER: *** MYSQL_PASSWORD: *** MYSQL_ROOT_USER: *** MYSQL_ROOT_PASSWORD: *** TZ: 'Asia/Tokyo' platform: linux/x86_64 # node.js app: container_name: icd_nodejs image: node:16 ports: - '5001:5001' - '8000:8000' volumes: - ./frourio-app:/app networks: backend: working_dir: /app tty: true depends_on: - db networks: backend: volumes: data:

補足情報(FW/ツールのバージョンなど)

拡張子を".txt"に変更して、以下のようなコマンドでdumpファイルを作成したところ、ホスト上のPCのdataディレクトリ配下に"dump.txt"ファイルを確認できましたが、拡張子を"sql"と"dmp"にしてdumpファイルを作成したところ、ホストPCではデータを確認できませんでした。
・確認 → mysqldump -u root -p icd_mysql > dump.txt
・確認できない → mysqldump -u root -p icd_mysql > dump.sql
・確認できない → mysqldump -u root -p icd_mysql > dump.dmp

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

mysqldumpを実行したディレクトリはボリュームをマウントしたディレクトリ以外だったのではないでしょうか?

Bash

1docker container exec -it icd_mysql bash

コンテナに入った直後はおそらく/rootディレクトリがカレントディレクトリになることが多いと思います(コンテナの設定によります)。

そこでmysqldumpを実行してもホストのディレクトをバインドしていないので、ホストにダンプデータが保存されることはないと思います。

  • ./docker/db/data:/var/lib/mysql
  • ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf

docker-compose.yamlでホストのディレクトリをバインドしているディレクトリでmysqldumpを実行する必要があるのかなと思います。

投稿2022/04/14 06:29

編集2022/04/14 06:36
madoka-t

総合スコア379

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問