1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerを使ってMySQLのExample Databasesを利用してみる

1
Posted at

はじめに

私は今「おうちで学べるデータベースのきほん」という本でRDBMSの学習を進めているのですが、MySQLサーバーを起動してworld databaseを使ってみるというところで、どうせならDockerを利用してみようと思い今回の記事執筆に至りました。至らぬ点もあるかとは思いますが、どうかお付き合いください。

実行環境

  • 機種名:MacBook Pro 2021
  • チップ:Apple M1 Pro
  • メモリ:16GB
  • OS:macOS Ventura 13.3.1
  • Docker version:23.0.5

やりたいこと

  • Docker上にMySQLのコンテナを立てる
  • MySQLのバージョンは5.7
  • MySQLでExample Databasesのworld databaseを使う

やってみる

1. docker hubを確認

docker hubのMySQLのページをまずは確認します。

注意
Dockerfileのリンクが変わっているところに注意してください。
今までと同じようにFROM mysql:5.7と書いてしまうとoraclelinuxで起動してしまいます。すると、
RUN apt-get updateが実行された時に、
apt-get: command not found
と怒られてしまいます。

2. Dockerfileを作成

先ほどの点に注意して、MySQLのバージョンを指定する時に-debianを追記しておきます。
さらに、今回はzipファイルをWeb上からダウンロードして、解凍する必要があるため、wgetunzipをインストールしておく必要があります。
最後にzipファイルのダウンロード先と解凍したファイルの移動先を指定します。

FROM mysql:5.7-debian

ENV MYSQL_ROOT_PASSWORD=root_pass

RUN apt-get update
RUN apt-get install -y wget unzip
RUN wget https://downloads.mysql.com/docs/world-db.zip
RUN unzip world-db.zip
RUN mv world-db/world.sql /docker-entrypoint-initdb.d/world.sql

3. docker-compose.ymlを作成

platformを指定したいので、docker-compose.ymlも作成していきます。
ポートは利用している場合適宜変えてください。

注意
platformを指定せずDockerfileだけで起動しようとすると以下のようにエラーが出ます。
failed to solve: mysql:5.7-debian: no match for platform in manifest

version: "3"

services:
  db:
    container_name: mysql-5.7
    build:
      dockerfile: Dockerfile
    platform: linux/x86_64
    ports:
      - 3306:3306

4. コンテナを起動する

先ほど作成したファイルをもとにコンテナを起動します。

% docker-compose up -d

5. コンテナに入る

起動したコンテナの名前「mysql-5.7」とbashを指定して中に入ります。

% docker exec -it mysql-5.7 bash

6. MySQLに入る

今回はrootでMySQLの中に入ります。
-uでユーザーを指定して、-pまで打ったらエンターを押してください。

root@d873265e9473:/# mysql -u root -p

7. MySQLのパスワードを入力する

以下のような表示が出たら、パスワードを入力してください。
今回はDockerfileでENV MYSQL_ROOT_PASSWORD=root_passと指定しているので、「root_pass」がMySQLのrootのパスワードになります。

Enter password: 

8. world databaseのサンプルが開けるか確認する。

8-1. データベースが表示できるか確認する。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
5 rows in set (0.01 sec)

8-2. テーブルが表示されるか確認する。

mysql> use world;
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city            |
| country         |
| countrylanguage |
+-----------------+
3 rows in set (0.01 sec)

無事サンプルが入っていましたね。
ここまでくれば大丈夫そうです。
あとは本に従って学習を進めていきましょう!!!

おわりに

今回久しぶりにDockerを起動するにあたり、以前使用していたDockerfileやdocker-composeをそのまま使えるのでは!?と思い動かしてみましたが、やっぱりダメでした。。。
なんでダメなのか設定を見直していくうちに「なんか2年前と違う!!!」っていうところを2点見つけたため、注意として残してあります。理由は文中に残してありますが、使わないうちにあっという間に置いてかれるなぁと感じました。
これからは普段からどんどん使っていこうと決意したのでした。。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?