ささっと作れたDockerのMySQL5.6

はじめまして。コロナの影響により2020年4月に中途入社してから3ヶ月間フルでリモートワークとなり、7月に初めてオフィスに出社したid:rosoneです。

リモート歓迎会、リモート入社手続き、リモート引き継ぎ、と数年前には想像もしていなかった働き方が日常となりつつあります。

はじめに

Macで開発していく上でローカルにデータベースを持ちたくなりました。

ローカルにデータベースを作成するための様々な手法が存在している中、私にとってDockerがベストな選択肢となったので、その一連の流れを紹介します。

以前試したことがある他の方法の所感をまとめます。(3~4年前の記憶なので、今は状況が変わっているかもしれません)

  • Macにグローバルインストール:home brewでささっと導入はできるものの、複数DB(異なるバージョン)の切り替えが面倒
  • vagrantvagrant起動中はPCリソースを多めに使用しているのか、全体的にPCが重くなってしまった(仮想環境上でOSが動いているのでしかたない)

Dockerなら上記で抱えていた問題を一挙に解決してくれそうだが、Dockerでmysql環境を作るのは初めてなので構築に時間がかかってしまうかな…と尻込みしていました。

しかし思いのほか簡単に作れたので、作成の手順を紹介します。

0.事前準備

Docker Hub

上記からDocker Desktop for Macをダウンロードし、インストールを行います。

インストールが完了するとDockerコマンドが使用できるようになるので、下記のコマンドを実行してversion情報が表示されていれば成功です。

$docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:21:11 2020
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:29:16 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

1. イメージのpull

イメージを Docker Hub から取得します。

$docker pull mysql:5.6

今回の開発ではmysql5.6を使用しているので、ローカルも同じバージョンで作成するために mysql:5.6 を指定しています。

バージョンを指定せずに実行すれば最新版のイメージを取得できます。

$docker pull mysql

5.6以外のバージョンも指定可能です。

$docker pull mysql:5.7

2. コンテナを作成する

コマンドを実行してコンテナを作成します。

コマンドの末尾に先程pullしたイメージを指定します。今回はmysql5.6で作成したいので、mysql:5.6を指定しています。

$docker run --name お好きな名前をつけてあげてください -e MYSQL_ROOT_PASSWORD=お好きなルートパスワード -e MYSQL_USER=お好きなユーザー名 -e MYSQL_PASSWORD=お好きなパスワード -p 3306:3306 -d mysql:5.6

実行結果

$docker run --name onamae -e MYSQL_ROOT_PASSWORD=rootpass -e MYSQL_USER=admin -e MYSQL_PASSWORD=pass -p 3306:3306 -d mysql:5.6
4b6970430841f4f4d9aef5602dfd8fd1a36766c73da2307006d45e09123fbbbb

今回はonamaeという名前で作成しました。

コマンドが成功したら、Docker Desktop上で下記のように表示されており、起動済みの状態で作成されていることを確認できます。

f:id:rosone:20200708193407p:plain
step2-2

3. 作成したデータベースに接続する

すでに2.の手順でコンテナは起動済みなので、アクセス情報を入力して接続します。

接続ツールはお好きなものを使用して問題ありませんが、今回はSequel Proを使用します。

ユーザー名とパスワードは作成時のものを指定するので、今回は下記を指定します。

  • ユーザ名:admin
  • パスワード:pass
    f:id:rosone:20200708193828p:plain
    step3-1

接続のテストをしてみると、疎通に成功しました。

あとはそのまま接続すれば、データベースにアクセス出来ます。

f:id:rosone:20200708193837p:plain
step3-2

おわりに

今回はイメージのpullからコンテナの立ち上げまでを紹介しましたが、Dockerにはまだまだたくさんの機能があり、奥が深いです。

本記事では紹介できませんでしたが、Dockerfileというファイルに設定を記述することで、コンテナの構築を自動化することもできます。

コンテナの構築を自動化することで、チームメンバーに配布して同等のローカル環境を構築してもらう、Amazon ECS等を利用して本番環境も構築しちゃう、など嬉しいことがたくさんあります。

私はまだコンテナの構築自動化はやったことがないので、実際に試してみて良い感じだったら記事にまとめようと思います。