0
0

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 5 years have passed since last update.

【Docker-02】Docker for Macで使い捨てMySQL環境の作成

Last updated at Posted at 2019-11-25

#はじめに
SQLの練習をしたい時にローカルで使い捨てできる環境あると良いなーと思っていたらDockerで簡単に実現できそうなのでやってみました。
仮想環境の知識が乏しい時はAWSに立てるか?とか考えてたので正気じゃないですね:innocent:

本記事の執筆にあたり、「Dockerで使い捨てのMySQL環境を用意する。事前データを投入して起動する。」を出典とさせて頂きました。この場を借りてお礼申し上げます!

#やってみる
##Docker Desctop for Macのインストール
公式からインストールします。
https://docs.docker.com/docker-for-mac/install/

書いてて思い出しましたが、確かブラウザでDockerの起動とか練習するSaasがあったような。。?
そちらでもMySQL環境作成できるかもしれませんね。本記事では割愛させて頂きます。

##コンテナの起動
MySQL公式のイメージを使用するので、いきなり起動。便利すぎる。

コマンドは改行せずに1行で書き切ってもOKです。
パスワードは確か英小文字大文字数字の8行とか9行じゃないとダメだったような気がしますが、適当に入力してもログインできました。なんでだw

サイトに倣い、ポートは43306をマッピング。3306:3306でも良いと思います。

$ docker container run --rm -d \
> -e MYSQL_ROOT_PASSWORD=okome \
> -p 43306:3306 --name mysql mysql:5.7

##mysqlに接続
ローカルのシェルでmysqlしたら怒られた。
「mysql」コンテナのシェルを起動した後にmysqlに接続するのが正解のようです。
パスワードはコンテナ起動時に指定した「okome」を入力。

$ docker exec -it mysql /bin/bash
# mysql -uroot -p
Enter password:

mysql>

うおお動いた!早い!かんたん!
特に.mysqlは指定していないのでまっさらの初期状態ですが、勉強目的の使い捨て環境と考えるなら全然問題ないですね。捗るぜ。。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

#事前にデータ投入して起動する
Dockerで使い捨てのMySQL環境を用意する。事前データを投入して起動する。」のリンクにあった「事前にデータ投入をした MySQL Docker イメージを作る場合は /docker-entrypoint-initdb.d を活用すると便利」を拝読すると、docker-entrypoint-initdb.d/にテーブルや実データを定義したgzやgzipを置けばコンテナ起動時に読み込んでくれるとのこと。

Dockerfileをサイト通りに記述し、公式からダウンロードしたworld.sql.gzを同じディレクトリに配置します。

$ cat Dockerfile
FROM mysql:5.7

COPY world.sql.gz /docker-entrypoint-initdb.d/world.sql.gz

$ ls -l
Dockerfile
world.sql.gz

配置後はイメージをビルドし、起動。

$ docker build -t mysql-image .
$ docker container run -e MYSQL_ROOT_PASSWORD=okome --name mysqlserver -d mysql-image

シェルを起動してmysqlに接続。
world databaseできとるやん。。素晴らしすぎる。

$ docker container exec -it mysqlserver /bin/bash
# mysql -uroot -p
Enter password:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
5 rows in set (0.00 sec)

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

コンテナを停止する時は普通にdocker stopで。
run→stopしたコンテナを再起動するときはstartで行います。

$ docker stop mysqlserver
$ docker start mysqlserver #PIDでも可

#おわりに
実際に手を動かすと、Dockerの可搬性の高さを実感できますね。
DB周りの知識が弱いんで、これを使ってガリガリ手を動かします!

オプションも散らかってきたので整理しなきゃですね。
あと薄々気づいてはいたのですが、dockerコマンドのcontainerって省略できたんですね。
それが一番有益だったかもしれないw

簡単ですが以上です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?