Spring Boot でサービス開発 #1

Kenta Kosugi
5 min readSep 6, 2022

--

用意するもの

  • 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.

Example Databases

上記から「sakila database」の Zip か TGZ ファイルをダウンロードして展開しておきます。

展開すると以下3ファイルを確認できます。

  1. sakila-data.sql
  2. sakila-schema.sql
  3. sakila.mwb

2 はスキーマファイル、1はデータを格納する SQL ファイルになっています。

Sakila Docker イメージの作成

以下の内容の Dockerfile を作成します。

そして、 以下の2ファイルを名称を変更して Dockerfile と同じ場所に配置します。

  1. sakila-data.sql → 002-sakila-data.sql
  2. sakila-schema.sql → 001-sakila-schema.sql

そして、以下のコマンドを実行します。

$ docker build -t sakila:v1 -f Dockerfile .
docker build の実行結果

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 をご利用の方は以下の手順で接続することができます。

  1. 「Database」 → 「+」を選択

2. 「Data Source」 → 「MySQL」を選択

3. 「User」/ 「Password」に「test」を設定し、「Database」に「sakila」を指定します。他はデフォルト値のままで問題ありません。MySQL に接続するのが初めてのケースでは JDBC ドライバをダウンロードするリンクが下の図に出てくるため、予めクリックしてダウンロードする必要があります。

Sakila データベースへの接続が成功すると上記のような画面を見ることができます。例えば、「actor」テーブルをダブルクリックすると、以下のようにテーブルを参照することが可能です。

#1 はこれで終わりです。

--

--

Kenta Kosugi
Kenta Kosugi

Written by Kenta Kosugi

Javaアプリケーションサーバーの開発からCORBA製品のサポート、QA、証券外務員(第一種免許)、ストレージ屋、アーキテクト、SaaS屋と一貫性のない道を歩んでいます。Red Hatに復帰しました。

No responses yet