dockerを使用して、MySQL5.7の環境を構築します。
簡単なdockerコンテナの起動については理解していることを前提としますので、以下を参考にしてからこの記事を読んで下さい。
コンテナ起動
今回、MySQLコンテナを生成する際、いくつかオプションを指定してdockerコンテナを生成する必要があります。
ポイントは以下の3点です。
- ポートフォワード
- MySQL情報の指定
- データベース情報の共有
なお、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_PASSWORD | rootパスワード |
MYSQL_USER | mysqlユーザ |
MYSQL_PASSWORD | mysqlユーザのパスワード |
データベース情報の共有
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をインストールし、開発環境を構築します。