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
おわり
コメント