追記2024年6月
記事中で書いてたDockerfileでは立ち上がらなくなったので、これ👇を使うようにした。
# Stage 1: Use a temporary image to download and prepare the sakila-db files FROM debian:buster AS sakila-preparation RUN apt-get update && \ apt-get install -y wget unzip && \ wget http://downloads.mysql.com/docs/sakila-db.zip && \ unzip sakila-db.zip # Stage 2: Use the official MySQL image FROM mysql:8 # Copy the sakila-db files from the temporary image COPY --from=sakila-preparation /sakila-db/sakila-schema.sql /docker-entrypoint-initdb.d/01_sakila-schema.sql COPY --from=sakila-preparation /sakila-db/sakila-data.sql /docker-entrypoint-initdb.d/02_sakila-data.sql ENV MYSQL_ROOT_PASSWORD=root
追記終わり
MySQLの勉強がしたかったので、MySQL公式が用意してくれているサンプルデータベースである「sakila」をいろいろ弄り回そうと思いました。
そのための環境をDockerで用意したメモ。
まず以下のDockerfile
を用意。
FROM mysql:8 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
おわり
コメント