Spring Boot でサービス開発 #1
用意するもの
- Docker Desktop for Mac
- IntelliJ IDEA(Communication 版でも OK)
Sakila Sample Database
MySQL に Sakila Sample Database が用意されているのでこれを利用します。
上記の Web ページから Installation のページに飛んで最初のリンクに飛びます。
https://dev.mysql.com/doc/index-other.html.
上記から「sakila database」の Zip か TGZ ファイルをダウンロードして展開しておきます。
展開すると以下3ファイルを確認できます。
- sakila-data.sql
- sakila-schema.sql
- sakila.mwb
2 はスキーマファイル、1はデータを格納する SQL ファイルになっています。
Sakila Docker イメージの作成
以下の内容の Dockerfile を作成します。
そして、 以下の2ファイルを名称を変更して Dockerfile と同じ場所に配置します。
- sakila-data.sql → 002-sakila-data.sql
- sakila-schema.sql → 001-sakila-schema.sql
そして、以下のコマンドを実行します。
$ docker build -t sakila:v1 -f Dockerfile .
Sakila Docker イメージの起動
以下のコマンドを実行することで MySQL のコンテナが起動します。
$ docker run -d --name sakila -p 3306:3306 sakila:v1
Dockerfile の解説
MYSQL_DATABASE 環境変数を設定することで、MySQL 起動時にこの環境変数に指定された名称でデータベースを作成することができます。同様に MYSQL_USER / MYSQL_PASSWORD で指定したユーザー、パスワードを起動時に作成し、MYSQL_DATABASE への権限を付与してくれます。また MYSQL_ROOT_PASSWORD で指定した管理者パスワードも設定することが可能です。
TZ はタイムゾーンの指定です。
COPY の行は Sakila Sample Database でダウンロードした SQL ファイルを /docker-entrypoint-initdb.d ディレクトリにコピーしています。このディレクトリに SQL ファイルを投入しておくことで Docker コンテナ起動時に自動で実行されます。その際、アルファベット順に起動されるため、先に Schema を作成する SQL を実行するようファイル名をリネームしておきました。スキーマ作成 →データ生成の順に SQL が実行されます。
起動した Sakila データベースへのアクセス
IntelliJ IDEA Ultimate を使っていない人は MySQL Workbench をダウンロードしてください。
接続 URL : jdbc:mysql://localhost:3306/sakila
ユーザー名 : test
パスワード : test
で接続できるはずです。
IntelliJ IDEA Ultimate をご利用の方は以下の手順で接続することができます。
- 「Database」 → 「+」を選択
2. 「Data Source」 → 「MySQL」を選択
3. 「User」/ 「Password」に「test」を設定し、「Database」に「sakila」を指定します。他はデフォルト値のままで問題ありません。MySQL に接続するのが初めてのケースでは JDBC ドライバをダウンロードするリンクが下の図に出てくるため、予めクリックしてダウンロードする必要があります。
Sakila データベースへの接続が成功すると上記のような画面を見ることができます。例えば、「actor」テーブルをダブルクリックすると、以下のようにテーブルを参照することが可能です。
#1 はこれで終わりです。