はじめに
2022年9月から本格的にプログラミングを学習し始め、2023年4月に京都のWeb系ベンチャ企業でフロントエンジニアとして入社しました。現在エンジニア歴は3ヶ月になります。実務では主にWordpress, JavaScript, phpを使用しています。
この記事の対象者
- Dockerに興味があるが、どのように使用すれば良いかわからない方
- WordPressのローカル開発環境を簡単に構築したい方
- コンテナ化された開発環境について学びたい方
参照サイト
Docker公式ドキュメンテーション
WordPress Docker Image
MySQL Docker Image
開発環境
- Docker 20.10.7
- WordPress Ver 6.2.2
- MySQL Ver 8.0.33
基本的な環境構築方法
Dockerを使ってWordPressとMySQLのコンテナを作成し、ローカルでの開発環境を構築する方法をご紹介します。この方法を使えば、環境構築の手間を大幅に削減でき、さらに環境差異によるトラブルを防ぐことができます。
1: まずは、Docker内で新しいネットワークを作成します。このネットワークは、後で作成するMySQLコンテナとWordPressコンテナが通信するためのものです。
docker network create wordpress000net1
2: 次に、MySQLのDockerコンテナを作成し、起動します。ここでは、MySQLの設定を行うための環境変数を設定しています。
docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
このコマンドはMySQLのコンテナを作成し、起動します。それぞれのオプションは以下の通りです。
-
docker run
: Dockerコンテナを作成し、実行するコマンドです。 -
--name mysql000ex11
: コンテナにmysql000ex11という名前を付けます。 -
-dit
: -dはコンテナをバックグラウンドで実行(デタッチモード)、-iはインタラクティブモード、-tは仮想端末(tty)を割り当てるオプションです。 -
--net=wordpress000net1
: wordpress000net1という名前のネットワークに接続します。 -
-e MYSQL_ROOT_PASSWORD=myrootpass
: 環境変数としてMySQLのrootユーザーのパスワードを設定します。 -
-e MYSQL_DATABASE=wordpress000db
: 環境変数として作成するデータベースの名前を設定します。 -
-e MYSQL_USER=wordpress000kun
: 環境変数として作成するMySQLのユーザー名を設定します。 -
-e MYSQL_PASSWORD=wkunpass
: 環境変数として上記ユーザーのパスワードを設定します。 -
mysql
: 使用するイメージ名を指定します。 -
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
: MySQLの設定を指定します。文字セット、照合順序、認証プラグインを設定しています。
使用するMySQLのオプション
項目 | オプション | 値 |
---|---|---|
ネットワーク名 | --net |
wordpress000net1 |
MySQLのコンテナ名 | --name |
mysql000ex11 |
実行オプション | -dit |
N/A |
MySQLのルートパスワード | -e MYSQL_ROOT_PASSWORD |
myrootpass |
MySQLのデータベース名 | -e MYSQL_DATABASE |
wordpress000db |
MySQLのユーザー名 | -e MYSQL_USER |
wordpress000kun |
MySQLのパスワード | -e MYSQL_PASSWORD |
wkunpass |
3: 次に、WordPressのDockerコンテナを作成し、起動します。ここでは、WordPressがMySQLデータベースに接続するための情報を提供する環境変数を設定しています。
docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
このコマンドはWordPressのコンテナを作成し、起動します。それぞれのオプションは以下の通りです。
-
docker run
: Dockerコンテナを作成し、実行するコマンドです。 -
--name wordpress000ex12
: コンテナにwordpress000ex12という名前を付けます。 -
-dit
: -dはコンテナをバックグラウンドで実行(デタッチモード)、-iはインタラクティブモード、-tは仮想端末(tty)を割り当てるオプションです。 -
--net=wordpress000net1
: wordpress000net1という名前のネットワークに接続します。 -
-p 8085:80
: ホストの8085ポートをコンテナの80ポートにマッピングします。これにより、ホストマシンの8085ポートでアクセスすると、コンテナの80ポート(WordPressが動作しているポート)にアクセスできます。 -
-e WORDPRESS_DB_HOST=mysql000ex11
: 環境変数としてWordPressが接続するデータベースのホスト名(ここではMySQLコンテナの名前)を設定します。 -
-e WORDPRESS_DB_NAME=wordpress000db
: 環境変数としてWordPressが使用するデータベースの名前を設定します。 -
-e WORDPRESS_DB_USER=wordpress000kun
: 環境変数としてデータベースのユーザー名を設定します。 -
-e WORDPRESS_DB_PASSWORD=wkunpass
: 環境変数として上記ユーザーのパスワードを設定します。 -
wordpress
: 使用するイメージ名を指定します。
使用するWordPressのオプション
項目 | オプション | 値 |
---|---|---|
ネットワーク名 | --net |
wordpress000net1 |
WordPressのコンテナ名 | --name |
wordpress000ex12 |
実行オプション | -dit |
N/A |
ポート番号を指定 | -p |
8085:80 |
データベースのコンテナ名 | -e WORDPRESS_DB_HOST |
mysql000ex11 |
データベース領域名 | -e WORDPRESS_DB_NAME |
wordpress000db |
データベースのユーザー名 | -e WORDPRESS_DB_USER |
wordpress000kun |
データベースのパスワード | -e WORDPRESS_DB_PASSWORD |
wkunpass |
これで、WordPressとMySQLのコンテナが作成され、起動しました。docker psコマンドを使って、コンテナが正しく起動していることを確認しましょう。
docker ps
4: 最後に、ブラウザでhttp://localhost:8085
にアクセスし、WordPressが正しく動作していることを確認します。
5: MySQLとWordPressのVersionの確認方法
MySQLのバージョンを確認するには、MySQLのコンテナに入り、以下のコマンドを実行します。
docker exec -it mysql000ex11 mysql -V
このコマンドはMySQLのバージョン情報を表示します。出力の中に "Ver x.x.x" のような形式でバージョン番号が表示されます。
WordPressのバージョンを確認するには、以下の手順を実行します。
WordPressが動作しているコンテナに入ります。以下のコマンドを実行します。
docker exec -it wordpress000ex12 bash
コンテナ内部に入ったら、wp-includes/version.php ファイルを開きます。このファイルにはWordPressのバージョン情報が含まれています。以下のコマンドを実行します。
cat /var/www/html/wp-includes/version.php
コマンドを実行すると、ファイルの内容が表示されます。その中に $wp_version = 'x.x.x';
のような行があります。ここに書かれている 'x.x.x'
がWordPressのバージョンです。
6: 開発が終わったら、以下のコマンドでコンテナを停止し、削除します。これにより、Docker環境をクリーンな状態に戻すことができます。
docker stop wordpress000ex12
docker stop mysql000ex11
docker rm wordpress000ex12
docker rm mysql000ex11
docker image rm wordpress
docker image rm mysql
docker network rm wordpress000net1
Docker-Composeを使用した開発環境の構築
Docker Composeを使用すると、複数のコンテナを一度に管理することができます。それでは、Docker Composeを使ってWordPressとMySQLのローカル開発環境を構築する方法をご紹介します。
1: まず、以下の内容でdocker-compose.ymlファイルを作成します。このファイルは、WordPressとMySQLのコンテナを定義し、それぞれの設定を行います。
version: '3.8'
services:
db:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress000db
MYSQL_USER: wordpress000kun
MYSQL_PASSWORD: wkunpass
command: '--default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci'
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8085:80"
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress000kun
WORDPRESS_DB_PASSWORD: wkunpass
WORDPRESS_DB_NAME: wordpress000db
volumes:
db_data: {}
2: 次に、以下のコマンドを実行して、Docker Composeを使ってコンテナを作成し、起動します。
docker-compose up -d
これで、WordPressとMySQLのコンテナが作成され、起動しました。ブラウザでhttp://localhost:8085
にアクセスし、WordPressが正しく動作していることを確認します。
開発が終わったら、以下のコマンドでコンテナを停止し、削除します。これにより、Docker環境をクリーンな状態に戻すことができます。
docker-compose down --volumes
以上で、Docker Composeを使ってWordPressとMySQLのローカル開発環境を構築する方法の説明を終わります。この方法を使えば、複数のコンテナを一度に管理し、環境構築の手間をさらに削減することができます。ぜひ試してみてください。