🐬

DockerでMySQLのDB環境を構築する

2022/06/20に公開約2,400字

こんにちはOtOです!
SQLのクエリなどを試し打ちしたい時があったので、Docker Hubで公開されているMySQLイメージを使って、ローカルにDB環境を構築するやり方を備忘録として残そうと思います。

概要

使用環境

  • MacOS
  • Docker for Mac (version 20.10.14)
  • VScode:ターミナル

流れ

  1. Docker Hubの公式MySQLイメージをpullする
  2. コンテナを起動する
  3. MySQLに接続する

1. Docker Hubの公式MySQLイメージをpullする。

  • Docker Hubからイメージを下記コマンドによりpullする
$ docker pull mysql --platform linux/x86_64

補足:'--platform linux/x86_64'を実行しないと下記エラーが出る。

no matching manifest for linux/arm64/v8 in the manifest list entries

→ MacbookのM1のCPUが、linux/arm64/v8なのだが、使用しようとしたimageがこれに対応していない

  • imageを確認する。
$ docker images

REPOSITORY       TAG             IMAGE ID       CREATED         SIZE
mysql            latest          65b636d5542b   3 weeks ago     524MB

2. コンテナを起動する。

  • pullしたimageからコンテナを作成する
docker run --name mysql -e MYSQL_ROOT_PASSWORD={{自分でpasswordを設定する}} -d {{利用するイメージ名}}
  • 例は下記
docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

補足:

  • オプション
    • -e:環境変数の設定
    • -d:デタッチドモードの指定
      • バックグラウンドでコンテナを立ち上げる
      • バックグラウンドで立ち上げないと、コンソールがどのコンテナのログに占有されて他のコマンドを打つことができなくなる
      • コンテナを起動したままにして、他のアプリケーションを動かしたりしたい場合はデタッチドモードを使う
    • name:コンテナ名を指定できる。

3. MySQLに接続する

  • 下記コマンドでDBに接続する
$ docker exec -it {{コンテナIDもしくはコンテナ名}} bash
ユーザー名@コンテナID:/# mysql -u root -p
  • 例は下記
docker exec -it 3b8c27369c95 bash
root@3b8c27369c95:/# mysql -u root -p
Enter password: 

この後に先ほど指定したパスワードを入力するとデータベースと接続できる。

補足:

  • オプション
    • -u:ユーザー名
    • -p:パスワード入力指定
    • -it:-i -tと同義
      • -i:--interactive
        • アタッチしていなくても、標準入力を開き続ける
      • -t:--tty
        • 疑似TTYを割り当て

後書き

今回はSQL単体で使いたかったので、他のアプリケーションはなしで環境構築しました。
もし他のアプリケーションと同時に使う場合はcomposeでできるので試してみてください。

参考文献

Discussion

ログインするとコメントできます