【Docker基礎】MySQLコンテナ起動時のオプションと引数

 ここでは、Dockerを使用してMySQLコンテナを起動する際に必要となるオプションと引数について詳しく解説します。WordPressコンテナとMySQLコンテナを連携させるためには、適切な設定が不可欠です。ここでは、MySQLコンテナを正しく起動し、WordPressとの連携をスムーズに行うための具体的な方法を学びます。

はじめに

 WordPressをDocker環境で運用する際には、WordPressコンテナMySQLコンテナの2つのコンテナが必要です。WordPressコンテナはWebサーバーとしての役割を果たし、ユーザーからのリクエストを処理します。一方、MySQLコンテナはデータベースとして機能し、WordPressが生成するコンテンツや設定情報を保存します。これらのコンテナが適切に連携するためには、MySQLコンテナの起動時に特定のオプションと引数を設定する必要があります。

MySQLコンテナの概要

 MySQLは、オープンソースのリレーショナルデータベース管理システム(RDBMS)であり、WordPressのデータベースとして広く利用されています。MySQLコンテナをDocker上で起動することで、WordPressはデータベースへのアクセスを通じて動的なコンテンツを提供できます。

MySQLとMariaDBの選択

 MySQLの代替としてMariaDBを利用することも可能です。MariaDBはMySQLの派生ソフトウェアであり、高い互換性を持つため、MySQLと同様にWordPressのデータベースとして使用できます。今回は、多くのレンタルサーバーでの利用状況を考慮し、MySQLを使用します。

MySQLコンテナ起動時のオプション

 MySQLコンテナを起動する際には、以下の9つのオプションを指定します。これらのオプションは、コンテナの名前、ネットワーク設定、環境変数の設定などを行うために使用されます。

よく使う記述例

docker run --name コンテナ名 -dit --net=ネットワーク名
 -e MYSQL_ROOT_PASSWORD=MySQLのrootパスワード
 -e MYSQL_DATABASE=データベース名
 -e MYSQL_USER=MySQLのユーザー名
 -e MYSQL_PASSWORD=MySQLのパスワード
 mysql
 --character-set-server=文字コード
 --collation-server=照合順序

使用するオプション一覧

項目オプションハンズオンでの値説明
ネットワーク名--networdpress-networkコンテナを接続するDockerネットワークを指定します。
MySQLのコンテナ名--namemysql-containerコンテナに付ける名前を指定します。
実行オプション-dit(なし)コンテナをバックグラウンドでデタッチモード、インタラクティブモード、TTYモードで実行します。
MySQLのrootパスワード-e MYSQL_ROOT_PASSWORDmyrootpassMySQLのrootユーザーのパスワードを設定します。
MySQLのデータベース名-e MYSQL_DATABASEwordpress-db自動的に作成されるデータベースの名前を指定します。
MySQLのユーザー名-e MYSQL_USERwordpressuser新規に作成するMySQLユーザーの名前を指定します。
MySQLのユーザーパスワード-e MYSQL_PASSWORDuserpass指定したMySQLユーザーのパスワードを設定します。
ポートマッピング-p3306:3306ホストとコンテナのポートをマッピングします(今回は省略)。
リソース制限--memory512mコンテナに割り当てるメモリ量を制限します(オプション)。

オプションの詳細解説

1.ネットワーク名 (--net)

 コンテナを特定のDockerネットワークに接続します。これにより、WordPressコンテナとMySQLコンテナが同じネットワーク内で通信できるようになります。

--net=wordpress-network

2.MySQLのコンテナ名 (--name)

コンテナに対して一意の名前を付けます。これにより、後でコンテナを識別しやすくなります。

--name mysql-container

3.実行オプション (-dit)

 コンテナをバックグラウンドでデタッチモード(-d)、インタラクティブモード(-i)、TTYモード(-t)で実行します。これにより、コンテナがバックグラウンドで動作し続けます。

-dit

4.MySQLのrootパスワード (-e MYSQL_ROOT_PASSWORD)

 MySQLのrootユーザーのパスワードを設定します。必須項目であり、セキュリティのため強固なパスワードを使用することが推奨されます。

-e MYSQL_ROOT_PASSWORD=myrootpass

5.MySQLのデータベース名 (-e MYSQL_DATABASE)

 コンテナ起動時に自動的に作成されるデータベースの名前を指定します。WordPressがこのデータベースを使用します。

-e MYSQL_DATABASE=wordpress-db

6.MySQLのユーザー名 (-e MYSQL_USER)

 MySQLに新規作成するユーザーの名前を指定します。このユーザーは指定したデータベースにアクセスできます。

-e MYSQL_USER=wordpressuser

7.MySQLのユーザーパスワード (-e MYSQL_PASSWORD)

 指定したユーザーのパスワードを設定します。セキュリティのため、強固なパスワードを使用することが推奨されます。

-e MYSQL_PASSWORD=userpass

8.ポートマッピング (-p)

 ホストとコンテナのポートをマッピングします。MySQLは通常、ポート3306を使用します。今回は省略することで、ホストから直接アクセスする必要がない場合に適しています。

-p 3306:3306

9.リソース制限 (--memory)

 コンテナに割り当てるメモリ量を制限します。これにより、コンテナがホストのリソースを過剰に消費するのを防ぎます。

--memory=512m

MySQLコンテナ起動時の引数

 MySQLコンテナを起動する際には、2つの引数を指定します。これらの引数は、データベースの文字コードや照合順序、認証方式を設定するために使用されます。

使用する引数一覧

引数意味
--character-set-server=utf8mb4データベースの文字コードをUTF8に設定します。
--collation-server=utf8mb4_unicode_ciデータベースの照合順序をUTF8に設定します。

引数の詳細解説

1.文字コードの設定 (--character-set-server=)

 データベースの文字コードをUTF8に設定します。utf8mb4は、完全なUTF-8文字セットをサポートし、絵文字などの4バイト文字も扱えます。

--character-set-server=utf8mb4

2.照合順序の設定 (--collation-server=)

 データベースの照合順序をUTF8に設定します。これにより、文字列の比較や並び替えが適切に行われます。

--collation-server=utf8mb4_unicode_ci

引数の重要性

 これらの引数を正しく設定することで、データベースの文字エンコーディングが適切に構成され、WordPressとの連携がスムーズに行われます。特に、日本語を含む多言語対応のサイトを運営する場合、文字コードの設定は非常に重要です。

MySQLコンテナ起動コマンドの実行例と解説

以下に、実際にMySQLコンテナを起動する際のコマンド例と、その詳細な解説を行います。

実行例

PS C:\Users\joeac> docker run
 --name mysql-container
 -dit
 --net=wordpress-network
 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress-db
 -e MYSQL_USER=wordpressuser -e MYSQL_PASSWORD=userpass mysql
 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

コマンドの解説

セクションオプション/引数説明
コンテナ名の指定--name mysql-containermysql-containerコンテナに「mysql-container」という名前を付けます。これにより、後でコンテナを識別しやすくなります。
実行モードの指定-dit(なし)コンテナをバックグラウンドでデタッチモード(-d)、インタラクティブモード(-i)、TTYモード(-t)で実行します。
ネットワークの指定--net=wordpress-networkwordpress-network「wordpress-network」というカスタムネットワークにコンテナを接続します。これにより、WordPressコンテナとの通信が可能になります。
環境変数の設定-e MYSQL_ROOT_PASSWORD=myrootpassmyrootpassMySQLのrootユーザーのパスワードを「myrootpass」に設定します。
-e MYSQL_DATABASE=wordpress-dbwordpress-db自動的に作成されるデータベースの名前を「wordpress-db」に設定します。
-e MYSQL_USER=wordpressuserwordpressuser新規に作成するMySQLユーザーの名前を「wordpressuser」に設定します。
-e MYSQL_PASSWORD=userpassuserpass指定したMySQLユーザーのパスワードを「userpass」に設定します。
イメージ名と引数の指定mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci(複数)使用するMySQLイメージと、データベースの文字コード、照合順序を設定します。

詳細なステップバイステップ解説

  1. コンテナ名の指定 (--name)
    --name mysql-container
    コンテナに「mysql-container」という名前を付けます。名前を付けることで、後でこのコンテナを簡単に参照できます。
  2. 実行モードの指定 (-dit)
    -dit
    このオプションは、コンテナをバックグラウンドでデタッチモード(-d)、インタラクティブモード(-i)、TTYモード(-t)で実行することを意味します。これにより、コンテナがバックグラウンドで動作し続けます。
  3. ネットワークの指定 (--net)
    --net=wordpress-network
    「wordpress-network」というカスタムネットワークにコンテナを接続します。これにより、WordPressコンテナとMySQLコンテナが同じネットワーク内で通信できるようになります。
  4. 環境変数の設定 (-e)
    -e MYSQL_ROOT_PASSWORD=myrootpass
    MySQLのrootユーザーのパスワードを「myrootpass」に設定します。必須項目であり、セキュリティのため強固なパスワードを使用することが推奨されます。
    -e MYSQL_DATABASE=wordpress-db
    自動的に作成されるデータベースの名前を「wordpress-db」に設定します。WordPressがこのデータベースを使用します。
    -e MYSQL_USER=wordpressuser
    MySQLに新規作成するユーザーの名前を「wordpressuser」に設定します。このユーザーは「wordpress-db」データベースにアクセスできます。
    -e MYSQL_PASSWORD=userpass
    指定したMySQLユーザーのパスワードを「userpass」に設定します。セキュリティのため、強固なパスワードを使用することが推奨されます。

実行結果の例

 コマンドが正常に実行されると、コンテナIDが表示されます。このIDはコンテナの一意な識別子であり、後でコンテナを操作する際に使用できます。

PS C:\Users\joeac> docker run
 --name mysql-container
 -dit
 --net=wordpress-network
 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress-db
 -e MYSQL_USER=wordpressuser -e MYSQL_PASSWORD=userpass mysql
 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
a1b2c3d4e5f67890123456789abcdef0123456789abcdef0123456789abcdef

注意点

  • セキュリティ: パスワードは強固なものを使用し、環境変数として直接渡す場合はセキュリティに配慮してください。実運用環境では、秘密情報は環境変数ファイルやDocker Secretsを利用することが推奨されます。
  • ネットワークの整合性: WordPressコンテナとMySQLコンテナが同じネットワークに接続されていることを確認してください。異なるネットワークに接続されている場合、通信ができず連携に失敗します。
  • リソース制限: コンテナに割り当てるリソース(メモリなど)を適切に設定し、ホストマシンのリソースを効率的に活用してください。

まとめ

 ここでは、Dockerを使用してMySQLコンテナを起動する際のオプションと引数について詳しく解説しました。以下のポイントを押さえておきましょう。

  • 重要なオプションの理解: --name-dit--net-eオプションを使用して、コンテナ名やネットワーク設定、環境変数を適切に設定することが重要です。
  • 環境変数の設定: MYSQL_ROOT_PASSWORDMYSQL_DATABASEMYSQL_USERMYSQL_PASSWORDなどの環境変数を設定することで、MySQLコンテナの初期設定を自動化できます。
  • 引数の活用: --character-set-server--collation-serverなどの引数を使用して、データベースの文字コードや照合順序を適切に設定します。
  • セキュリティとリソース管理: パスワードの強化やリソース制限を行い、セキュアかつ効率的なコンテナ運用を実現します。
  • コンテナの確認: docker psdocker network inspectなどのコマンドを活用して、コンテナの状態やネットワークの設定を定期的に確認します。

 これらの知識を基に、次章ではWordPressコンテナの作成時のオプションと引数について解説します。これにより、WordPressとMySQLの連携を完了させ、動的なWebサイトを構築・運用するためのステップを学びます。引き続き、Dockerの学習を進めていきましょう。