Open3
sakilaとworldのデータベースが入ったMysqlのコンテナイメージをさくっとつくる
「おうちで学べるデータベースのきほん 第2版」でWindowsとクラウド(AWS)での環境の作成の方法はあったけど、Macのはなかったのでメモ代わりに残しておく
といっても、環境をあんまり汚したくなかったのでDockerでイメージを作りdocker composeで起動する形とした。
なので他のOSでも使おうと思えば使えるとは思う。
Dockerとdocker composeをちょっとわかってる人じゃないと厳しいかもしれない。
前提条件
- docker desktopなどをインストールしておりdocker(composeも)が使える状態になっていること
手順とか
- Dockerfileとdocker-compose.ymlを同一ディレクトリに配置
-
docker compose
コマンドはdocker-compose.ymlのファイルがディレクトリで実施すること
Build&起動
docker compose up -d
停止
docker compose stop
起動
docker compose start
Mysqlに接続したい
docker compose exec mysql mysql -uroot -pOuchiDB2?
完全に削除(Volumeとbuildしたコンテナのイメージも削除する)
docker compose down -v --rmi local
コンテナの中に入ってみたい
docker compose exec mysql /bin/bash
抜けるときはCtrl + d
とか
Dockerfile
# ベースイメージとしてAlpine Linuxを使用
FROM alpine:3.18 AS downloader
# 必要なツールをインストール
RUN apk add --no-cache wget unzip
# 作業ディレクトリを設定
WORKDIR /tmp
# sakilaデータベースをダウンロードして解凍
RUN wget https://downloads.mysql.com/docs/sakila-db.zip && \
unzip sakila-db.zip && \
rm sakila-db.zip
# worldデータベースをダウンロードして解凍
RUN wget https://downloads.mysql.com/docs/world-db.zip && \
unzip world-db.zip && \
rm world-db.zip
# MySQLの公式イメージを使用
FROM mysql:8.4
# データベース初期化スクリプトをコピー
COPY /tmp/sakila-db/sakila-schema.sql /docker-entrypoint-initdb.d/1_sakila-schema.sql
COPY /tmp/sakila-db/sakila-data.sql /docker-entrypoint-initdb.d/2_sakila-data.sql
COPY /tmp/world-db/world.sql /docker-entrypoint-initdb.d/3_world.sql
docker-compose.yml
services:
mysql:
container_name: homedb-mysql
build:
context: .
environment:
MYSQL_ROOT_PASSWORD: OuchiDB2?
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data: