【docker】MySQL 環境構築

dockerを使用して、MySQL5.7の環境を構築します。

簡単なdockerコンテナの起動については理解していることを前提としますので、以下を参考にしてからこの記事を読んで下さい。

コンテナ起動

今回、MySQLコンテナを生成する際、いくつかオプションを指定してdockerコンテナを生成する必要があります。
ポイントは以下の3点です。

  1. ポートフォワード
  2. MySQL情報の指定
  3. データベース情報の共有

なお、dockerイメージはコンテナ生成時にダウンロードするので、docker pull コマンドは使用しません。

ポートフォワード

MySQLの接続ポートを指定する必要があります。ポートフォワードで接続ポートを指定します。
-p オプションを使用し、接続ポートを指定します。 “ホストOSポート:ゲストOSポート” の形式で指定します。
MySQLはデフォルトの設定だと、ポート3306を使用します。したがって、ゲストOSのポートは3306とします。
ホストOSのポートは任意のポート番号で構いませんが、他のコンテナがポートフォワードをしている場合、そのポート番号は使用出来ません。また、well-knownポート(ウェルノウンポート)の指定は避けて下さい。ホストOSで既に使用されているのでウェルノウンポートの利用はしない方が良いです。ポートに関しては説明しないので、詳しく知りたい場合は他のサイトを参考にして下さい。

docker run -itd --name コンテナ名 -p ホストOSポート:ゲストOSポート イメージ名:タグ名

MySQL情報の指定

mysqlイメージはコンテナを起動する時、オプションでMySQLのユーザ情報と、使用するデータベースが指定出来ます。なお、”root” ユーザは自動で作成されます。

MYSQL_DATABASE使用するデータベース(スキーマ)
MYSQL_ROOT_PASSWORDrootパスワード
MYSQL_USERmysqlユーザ
MYSQL_PASSWORDmysqlユーザのパスワード

データベース情報の共有

dockerのディレクトリを共有するコマンドを使用し、ホストOSとゲストOSでディレクトリを共有します。データベースのデータと共有することで、違うMySQLのコンテナに対しても同じデータが使用出来たり、誤ってMySQLコンテナを削除しても再びコンテナを起動すると同じデータが利用出来ます。MySQLのデータは、ゲストOS内”/var/lib/mysql”以下に出力されるので、このディレクトリをホストOSと共有します。
MySQLのディストリビュージョンやバージョンによってデータの場所が変わる場合、適宜、共有するディレクトリを変更して下さい。

-v ホストOSディレクトリ:ゲストOSディレクトリ

以下は、ホストOSとゲストOSでディレクトリを共有するオプションの例になります。

-v /Users/Documents/sample:/var/lib/mysql

起動

以下は、上記を考慮したMySQLコンテナ起動コマンドの例です。

docker run --name mysqlsample -p 3407:3306 -v /Users/Documents/sample:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_DATABASE=testDB -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=user -e MYSQL_PASSWORD=password -d mysql:5.7

最後に

次回はdockerを使用したLamp環境を構築します。
Linux、Apache、MysQL、phpをインストールし、開発環境を構築します。

© DeNnie.Lab All Rights Reserved.