スポンサーリンク

Docker MySQL環境構築

スポンサーリンク

Dockerを使用してMySQL環境の構築方法を紹介します。今回はDocker Composeを使用せずにコマンドで環境を構築します。MySQLの動作確認などに利用して頂ければと思います。

前提条件

Dockerがパソコンにインストール済み

以上です。

環境構築

今回はMySQLが提供している公式のDockerイメージを使用して作成します。作業の流れは

  1. Dockerイメージの取得
  2. イメージからコンテナ作成(PULL)

これだけです。これだけでDBサーバーの環境が作れるなんて便利な時代になりましたね。

Dockerイメージの取得(PULL)

MySQLが提供している公式のDockerイメージの紹介ページはこちらです。

mysql - Official Image | Docker Hub
MySQL is a widely used, open-source relational database management system (RDBMS).

こちらのページにDockerイメージの取得コマンドが記載されています。こちらのコマンドをコンソールで実行してください。

docker pull mysql

これで公式イメージの取得(PULL)は完了です。Docker Desktopで確認するとこんな感じです。

イメージからコンテナ作成

コンテナを作成するには以下のコマンドを実行します。

docker run --name mysql-sample -e MYSQL_ROOT_PASSWORD=rootPass -e MYSQL_DATABASE=my_db -e MYSQL_USER=my_user -e MYSQL_PASSWORD=my_pass -d -p 13306:3306 mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_bin

使用しているオプションについて説明します。

  • –name mysql-sample
    コンテナ名を指定します。今回はmysql-sampleという名前になります。注意として、コンテナ名には大文字は使用できません。
  • -e MYSQL_ROOT_PASSWORD=rootPass
    コンテナのrootのパスワードを指定します。
  • -e MYSQL_DATABASE=my_db
    後からデータベースを作成することも出来るのですが、コンテナ作成時にデータベースも作成する場合はデータベース名を指定します。
  • -e MYSQL_USER=my_user
    MYSQL_DATABASEで指定したデータベースに接続するユーザ名を指定します。指定したユーザにはデータベースへのGRANT ALL権限が付与されます。
  • -e MYSQL_PASSWORD=my_pass
    MYSQL_USERで指定したユーザのパスワードを指定します。
  • -d
    デーモンとして起動するオプション。バックグラウンドで動作します。
  • -p 13306:3306
    ローカルポートとコンテナのポートを接続するオプション。<ローカルポート>:<コンテナポート>で指定します。
  • mysql:latest
    タグを指定します。省略時(mysql)の場合、latestが適用されます。latestの場合、最新バージョンでコンテナが作成されます。
  • –character-set-server=utf8mb4
    作成するMySQLの文字コードを指定します。
  • –collation-server=utf8mb4_bin
    作成するMySQLの照合順序を指定します。

これでコンテナ作成は完了です。 Docker Desktopで確認するとこんな感じです。

接続確認

クライアントからDockerコンテナのMySQLに接続できることを確認します。
今回はMySQL Workbenchで接続してみます。

  • Hostname:ローカルのPC名かIPアドレスを指定します。
  • Port:-pオプションで指定したローカルポートを指定します。
  • Username:MYSQL_USERで指定したユーザを指定します。
  • Default Schema:MYSQL_DATABASEで指定したデータベースを指定します。

OKボタンをクリックします。

  • Password:MYSQL_PASSWORDで指定したデータベースを指定します。

OKボタンをクリックします。これで接続ができました。

mysql:latest を指定してコンテナを作成したので、現時点で最新の8.0.26がインストールされているのが確認できます。

コメント