Dockerでsakilaが入ったMySQL環境を作る

MySQLの勉強がしたかったので、MySQL公式が用意してくれているサンプルデータベースである「sakila」をいろいろ弄り回そうと思いました。

そのための環境をDockerで用意したメモ。

 

まず以下のDockerfileを用意。

FROM mysql:8-debian

ENV MYSQL_ROOT_PASSWORD=root

RUN apt update \
    && apt install -y wget unzip \
    && wget http://downloads.mysql.com/docs/sakila-db.zip \
    && unzip sakila-db.zip \
    && mv sakila-db/sakila-schema.sql /docker-entrypoint-initdb.d/01_sakila-schema.sql \
    && mv sakila-db/sakila-data.sql /docker-entrypoint-initdb.d/02_sakila-data.sql

参考にした記事:dockerでMySQLのサンプルデータベースのSakilaを使用した環境をすぐ使用できるように設定してみた – Qiita

 

このファイルの肝としては、MySQL公式が用意してくれているイメージは「/docker-entrypoint-initdb.dに置いた.sqlファイルはコンテナ初起動時に自動的に実行される」という特徴を持っているという点です。

なので、wgetコマンドを使ってMySQL公式からsakilaのデータベースが入っている.sqlファイルをダウンロードしてきて、それを展開して/docker-entrypoint-initdb.dに配置する・・・みたいなことをしてます。

あと移動ついでにファイルをリネームしてるのは、アルファベット順で /docker-entrypoint-initdb.d内の.sqlファイルが実行されるらしいので(公式に書いてます)、スキーマを定義する.sqlファイルを先に実行するためにリネームしてるだけだと思います。

 

あとは以下でイメージの作成。

docker build -t sakila-sample .

以下でイメージからコンテナを作成。

docker run --name sakila-sample -d sakila-sample

以下で起動したコンテナの中に入る。

docker container exec -it sakila-sample mysql -uroot -proot -Dsakila

 

おわり

コメント

タイトルとURLをコピーしました