2
4

More than 1 year has passed since last update.

Dockerを使ってWordPressとMySQLのローカル開発環境を構築する手順

Last updated at Posted at 2023-07-17

はじめに

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のローカル開発環境を構築する方法の説明を終わります。この方法を使えば、複数のコンテナを一度に管理し、環境構築の手間をさらに削減することができます。ぜひ試してみてください。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4