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

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

新規登録して質問してみよう
ただいま回答率
85.49%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

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

Docker

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

590閲覧

dockerでのmyslq初期データ投入

sanezane

総合スコア91

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

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

Docker

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/01/21 14:57

編集2019/01/23 12:16

spring bootにてwebアプリケーションを開発勉強中です。

やりたいこと

dockerにて作成したmysqlの環境で起動時にsqlファイルを読み込んでテーブルを作成したい。

現状

データベースの作成はできたが、テーブルができない。

docker-compose.ymlは以下

dockercompose

1version: '3' 2services: 3 mysql: 4 environment: 5 - MYSQL_DATABASE=demo 6 - MYSQL_ROOT_USER=root 7 - MYSQL_ROOT_PASSWORD=p@ssw0rd 8 - TZ=Japan 9 volumes: 10 - ./initdb.d/V1_Account_create.sql//読み込んで欲しいsqlファイル 11 ports: 12 - "3306:3306" 13

以下ファイルの配置
demo
■┗docker
■■┗initdb.d
■■■┗V1_Account_create.sql
イメージ説明

やったこと

imagesを1度削除してdocker-compose upを実施。
何回も起動と停止を繰り返しているのが悪いのでしょうか。

有識者の方どうかご指摘をお願いいたします。

■□■□■□■□追加情報■□■□■□■□
イメージ説明
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

volumesの指定方法が違うものと思われます

volumes: - ./initdb.d:/docker-entrypoint-initdb.d

上のようにしてみて下さい。

上の文の意味は
カレントディレクトリのinitdb.dディレクトリをコンテナの/docker-entrypoint-initdb.dにマウントする
となります

参考になりそうな記事
https://qiita.com/NagaokaKenichi/items/ae037963b33a85df33f5

投稿2019/01/21 15:43

teikoku-penguin

総合スコア314

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

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

sanezane

2019/01/23 12:19

ありがとうございます。おかげさでボリュームはバインドできたよう(追加情報1枚目)なのですが、確認のためターミナルでdocker上の該当のデータベースへ入ってshow tablesをすると「テーブルないよ」という内容が帰ってきます(追加情報2枚目)。 バインディングするだけではsqlは実行されないのでしょうか。思い当たるところがありましたらご意見をよろしくお願いします。
sanezane

2019/01/23 13:58

ちなみに定義しているsqlをターミナルからコピペして入力するとちゃんとテーブルが出来上がります。。
teikoku-penguin

2019/01/23 16:54

追加情報1枚目のvolumesの指定がまだ間違っているように見えます ./initdb.d/docker-entrypoint-initdb.d ではなく ./initdb.d:/docker-entrypoint-initdb.d です。 上のパスは2つに別れています。 ./initdb.dと/docker-entrypoint-initdb.dです。 区切りには : を用います。 :の左側がホストマシン側で右がコンテナ側のパスです。 意味はホストマシンの docker-compose.yml と同じ階層の ./initdb.d ディレクトリをDocker Containerの中では /docker-entrypoint-initdb.d として扱う です。
sanezane

2019/01/24 12:09

ご指摘の修正をして1度起動したところそのままだったのでimageとcontainerを削除してもう一度作り直したらお望みのテーブルが入っていました!!2週間くらい戦っていたので本当に感謝です。。。 imageっていうのはVirtual Boxとかで言うところのsnapshotのようなものという印象を受けました。 今回は一旦全て消したのですが、snapshotのようにレイヤーを積み上げていくのが普通の使い方という認識で良いでしょうか? しつこくてすみません。。。
sanezane

2019/01/24 15:16

たとえば、sqlを増やした場合はそのバージョンのimageを作成してコンテナの中で最新のimageを起動する。という使い方で認識あってますでしょうか。
teikoku-penguin

2019/01/24 15:22 編集

私なりの認識なので正しいかわかりませんが、docker imageとはOSやソフトウェアなどがDockerfileに記述した順でレイヤー化されまとめられたものです。 docker imageを元に作成したコンテナが隔離された実行環境です。 詳しい説明は色々な方が書いているのでそちらを参考にすると良いと思います。 https://qiita.com/wMETAw/items/b9bc643ded4b92bf6add http://enakai00.hatenablog.com/entry/20140802/1406958412 https://www.amazon.co.jp/dp/4297100339/ref=cm_sw_em_r_mt_dp_U_.EDsCb06HBK7M
teikoku-penguin

2019/01/24 15:29 編集

> imageっていうのはVirtual Boxとかで言うところのsnapshotのようなものという印象を受けました。 今回は一旦全て消したのですが、snapshotのようにレイヤーを積み上げていくのが普通の使い方という認識で良いでしょうか? 基本的には同じイメージからは毎回同じ環境が用意されるのでコンテナ内で作業した実績を残したい、 データベースの内容を永続化したい などの場合は volumeと言うものを使います。 データを永続化するための専用のコンテナを用意する方法と今回行っていたようにホスト側のディレクトリをコンテナのディレクトリにマウントして参照する方法があります。 なにも設定しない場合、コンテナ内で作ったリソースなどはコンテナ削除じに消えてしまいます。
sanezane

2019/01/28 15:20

まだ実現できておりませんが、「docker volume データベース 永続化」で検索したところ情報がたくさん出てきましたのでなんとか自力で実現させたいと思います。 ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問