このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】WordPressコンテナの構築①
ここでは、Docker Composeコマンドを使って、WordPressコンテナを構築していきます。
「Wordpressコンテナの構築」は次の2部に分けて解説していきます。
WordPressとは
WordPressは世界中で広く使用されており、ウェブサイトやブログの作成において最も人気のあるコンテンツ管理システム(CMS:Contents Management System)の一つです。そのシェアは非常に高く、数百万以上のウェブサイトがWordPress上で稼働しています。これは、個人ブログから企業のウェブサイト、オンラインストアまで幅広い範囲のユーザーに利用されています。
WordPressのシェアは、全ウェブサイトの43.1%、CMSの63.7%というデータもあります。
参考:https://blog-bootcamp.jp/start/wordpress-share/
WordPressの人気の理由の一つは、その使いやすさとカスタマイズ性です。初心者でも簡単にウェブサイトを構築し、運営することができます。また、テーマやプラグインを利用することで、デザインや機能を簡単にカスタマイズすることが可能です。
WordPressコンテナを使用するメリット
WordPressコンテナを使用することには、以下のようなメリットがあります。
環境の分離
WordPressコンテナを使用すると、開発環境と本番環境を完全に分離することができます。開発者は自分のローカル環境でWordPressコンテナを立ち上げ、新しいテーマやプラグインを試したり、変更を加えることができます。そして、本番環境に変更を適用する前に、十分なテストを行うことができます。
安定性の向上
WordPressコンテナを使用することで、本番環境でのサイトの安定性が向上します。新しいテーマやプラグインを導入する際に、予期しない問題が発生する可能性がありますが、開発環境で事前にテストすることで、本番環境での影響を最小限に抑えることができます。
作成するコンテナのイメージ
WordPressはデータの保存先としてMySQLやMariaDBなどのデータベースを使います。ここでは、MariaDBを使うことにします。
WordPressとMariaDBのイメージは、Docker Hubから、公式のWordPressとMariaDBのイメージをダウンロードすることができます。Docker Composeを使うと「compose.yaml」で、複数のコンテナの定義や、MariaDBとの接続情報が設定できます。
WordPressの主な環境変数
以下の表は、WordPressの主な環境変数です。
環境変数 | 説明 |
---|---|
WORDPRESS_DB_HOST | WordPressが接続するデータベースのサービス名を指定します。 |
WORDPRESS_DB_NAME | WordPressが使用するデータベースの名前を指定します。データベースが事前に作成されている必要があります。 |
WORDPRESS_DB_USER | WordPressがデータベースに接続する際のユーザー名を指定します。このユーザーには、指定されたデータベースへのアクセス権限が必要です。 |
WORDPRESS_DB_PASSWORD | WordPressがデータベースに接続する際のパスワードを指定します。このパスワードは、指定されたユーザーのパスワードと一致する必要があります。 |
これらの環境変数は、WordPressがデータベースに接続する際に必要な情報をです。データベースのホスト、名前、ユーザー、パスワードを正確に指定することで、WordPressが正常にデータベースに接続し、動作することができます。
MariaDBの主な環境変数
以下は、MariaDBコンテナの作成時に定義する一般的な環境変数の一部です。これらの環境変数は、コンテナの動作や設定をカスタマイズするために使用されます。
環境変数 | 説明 |
---|---|
MARIADB_ROOT_PASSWORD | ルートユーザーのパスワードを設定します。 |
MARIADB_DATABASE | 初期データベースを作成します。 |
MARIADB_USER | 初期ユーザーを作成します。 |
MARIADB_PASSWORD | 初期ユーザーのパスワードを設定します。 |
compose.yamlの定義
定義する「compose.yaml」の定義は次のようになります。
compose.yamlの定義内容
services:
wpdb:
image: mariadb:10.8
environment:
MARIADB_ROOT_PASSWORD: root-pass
MARIADB_DATABASE: database
MARIADB_USER: wp-user
MARIADB_PASSWORD: wp-pass
volumes:
- db-data:/var/lib/mysql
wordpress:
image: wordpress:6.5
depends_on:
- wpdb
environment:
WORDPRESS_DB_HOST: wpdb
WORDPRESS_DB_NAME: database
WORDPRESS_DB_USER: wp-user
WORDPRESS_DB_PASSWORD: wp-pass
ports:
- "80:80"
volumes:
- wp-data:/var/www/html
volumes:
db-data:
wp-data:
定義内容の解説
「compose.yaml」ファイルの定義を解説します。
サービス名 | wpdb |
---|---|
イメージ | mariadb:10.8 |
環境変数 | MARIADB_ROOT_PASSWORD: root-pass |
MARIADB_DATABASE: database | |
MARIADB_USER: wp-user | |
MARIADB_PASSWORD: wp-pass | |
ボリューム | db-data:/var/lib/mysql |
サービス名 | wordpress |
---|---|
イメージ | wordpress:6.5 |
依存関係 | wpdb |
環境変数 | WORDPRESS_DB_HOST: wpdb |
WORDPRESS_DB_NAME: database | |
WORDPRESS_DB_USER: wp-user | |
WORDPRESS_DB_PASSWORD: wp-pass | |
ポートフォワード | "80:80" ホストとコンテナのポート番号の関連付け |
ボリューム | wp-data:/var/www/html |
ボリューム名 | 説明 |
---|---|
db-data | ・wpdbにマウントするボリューム MariaDBのデータボリュームは db-data:/var/lib/mysql でマウントされます。 |
wp-data | ・wordpressにマウントするボリューム WordPressのデータボリュームは wp-data:/var/www/html でマウントされます。 |
このDocker Composeファイルの定義で、MariaDBとWordPressのコンテナがそれぞれ環境変数を通じて必要な設定情報を受け取ります。具体的には、MariaDBコンテナにはルートパスワード、データベース名、ユーザー名、ユーザーパスワードが与えられ、WordPressコンテナにはデータベースへの接続情報が与えられます。
また、それぞれのコンテナが使用するデータボリュームも定義されており、MariaDBのデータボリュームは「db-data:/var/lib/mysql
」にマウントされ、WordPressのデータボリュームは「wp-data:/var/www/html
」にマウントされます。
この定義を使用することで、WordPressとMariaDBのコンテナを簡単に構築し、それらを連携させることができます。また、定義には依存関係やポートのフォワーディングなどが含まれており、複数のサービスを一括して管理することができます。
依存関係の定義
このDocker Composeファイルの定義では、WordPressサービスがMariaDBサービスに依存しています。依存関係は以下のように定義しています。
wordpress:
凵凵depends_on:
凵凵凵凵-凵wpdb
※「凵」は半角スペースを表しています。
上の部分が依存関係を表しており、WordPressサービスが起動する前に、wpdb(MariaDBサービス)が起動することを要求しています。
WordPressはデータベースに接続しないと使用できません。
この依存関係を定義することで、WordPressとMariaDBの関係性が明確になり、Docker Composeがサービスの起動順序を管理しやすくなります。WordPressがMariaDBに依存していることが明示されるため、サービス間の相互関係がより明確になります。
ここまで、解説が少々長くなりましたので、次の「WordPressコンテナの構築②」でWorpPressコンテナを構築していきます。