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

追記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

 

おわり

コメント

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