Dockerを使って、既存のWordPressサイトとデータベース管理ツールであるphpMyAdminを組み合わせた開発環境を構築する手順をご紹介します。
目次
新規WordPressサイトの場合
新規WordPressサイトで同様の開発環境をローカルに作る方法もこちらの記事でご紹介しています。ぜひご覧ください。
作業ディレクトリの構成
% tree
.
├── compose.yaml
├── database
├── mysql
│ └── init
├── web
│ └── Dockerfile
└── wordpressそれぞれ次のような役割を持ちます。
compose.yaml
WordPress、MySQL、phpMyAdminなどのサービスに関する設定情報をまとめて記述します。
databaseディレクトリ
コンテナ内の所定の場所と紐づけて、データをローカルに保存するために利用します。
wordpressディレクトリ
コンテナ内の所定の場所と紐づけて、データをローカルに保存するために利用します。
mysql/initディレクトリ
既存WordPressサイトのデータベースファイルを保存してコンテナを起動する際に読み込みます。
webディレクトリDockerfileを保存します。
Dockerfile
WEBサーバーの設定に関する情報を記載します。
wordpressディレクトリ
既存WordPressサイトを構成するファイルを保存します。
Dockerを設定する
作業ディレクトリを作成したらDockerの設定を定義します。
compose.yamlの内容
compose.yamlの内容をご紹介します。
全体像
services:
web:
build: ./web/
ports:
- "8080:80"
volumes:
- ./wordpress:/var/www/html
db:
image: mysql:x.x.xx
environment:
MYSQL_DATABASE: dev_db
MYSQL_USER: dev_user
MYSQL_PASSWORD: dev_pass
MYSQL_ROOT_PASSWORD: dev_root_pass
volumes:
- ./mysql/init:/docker-entrypoint-initdb.d
- ./database:/var/lib/mysql
phpmyadmin:
image: phpmyadmin
ports:
- 8083:80
environment:
- PMA_ARBITRARY=1各コードの詳細
WEBサーバーのサービスを定義します。
services:
web:
build: ./web/
ports:
- "8080:80"
volumes:
- ./wordpress:/var/www/html
・・・(省略)・・・build./web/ディレクトリに保存しているDockerfileを読込み、コンテナを作成します。
ports
ローカルのポート8080とコンテナのポート80を紐づけています。
これにより、http://localhost:8080/のURLでWordPressサイトにアクセスできるようになります。
volumes
ローカルの./wordpress/ディレクトリとコンテナの/var/www/htmlディレクトリを紐づけしています。
ローカルのテーマやファイルを編集した際にリアルタイムでコンテナへも反映されます。
MySQLのサービスを定義します。
services:
・・・(省略)・・・
db:
image: mysql:x.x.xx
environment:
MYSQL_DATABASE: dev_db
MYSQL_USER: dev_user
MYSQL_PASSWORD: dev_pass
MYSQL_ROOT_PASSWORD: dev_root_pass
volumes:
- ./mysql/init:/docker-entrypoint-initdb.d
- ./database:/var/lib/mysql
・・・(省略)・・・image
本番環境に合わせたバージョンのMySQLのDockerイメージを指定しています。
environment
データベース名、ユーザー名、パスワードを設定しています。
この情報をもとにデータベースが作成されます。
volumes
コンテナの起動時に、ローカルの./mysql/initディレクトリにある既存WordPressサイトのデータベースをコンテナと紐づけます。
これにより、既存のデータベースをコンテナへインポートできます。
また、./databaseディレクトリとコンテナの/var/lib/mysqlを紐づけすることで、コンテナを削除してもデータベースのデータがローカルに残ります。
phpMyAdminのサービスを定義します。
services:
・・・(省略)・・・
phpmyadmin:
image: phpmyadmin
ports:
- 8083:80
environment:
- PMA_ARBITRARY=1image
最新バージョンのphpMyAdminのDockerイメージを指定しています。
ports
ローカルのポート8083とコンテナのポート80を紐づけています。http://localhost:8083/のURLでphpMyAdminにアクセスできるようになります。
environment
コンテナに環境変数を設定しています。PMA_ARBITRARY=1とすると、phpMyAdminにアクセスしたときに接続先データベースを選択するようになります。
Dockerfileの内容
FROM php:x.x.x-apache
RUN apt-get update && docker-php-ext-install mysqli pdo_mysql
RUN a2enmod rewrite
RUN sed -i -e 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.confFROMでは本番環境に合わせたPHPバージョンでWEBサーバーのイメージを指定しています。
このイメージでコンテナを起動します。
RUN apt-getではデータベースの接続に必要なPHP拡張機能をインストールしています。
RUN a2enmodではmod_rewriteモジュールを有効化して、RUN sedではhtaccessファイルの利用を有効化しています。
既存WordPressサイトを用意する
WordPressとデータベースをダウンロードする
FTPなどで既存のWordPressサイトとデータベースをダウンロードし、それぞれ次の作業ディレクトリに保存します。
./mysql/init
既存のWordPressのデータベースファイルを保存する。
./wordpress
既存のWordPressを保存する。
wp-config.phpを修正する
wp-config.phpのデータベース情報をcompose.yamlのdbサービスで定義した内容と揃えます。
/** WordPress のためのデータベース名 */
define('DB_NAME', 'dev_db');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'dev_user');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'dev_pass');
/** MySQL のホスト名 */
define('DB_HOST', 'db');サイトURLをwp-config.phpで設定している場合は、その内容も修正しておきます。
define( 'WP_HOME', 'http://localhost:8080' );
define( 'WP_SITEURL', 'http://localhost:8080' );環境を立ち上げる
Dockerの設定や既存WordPressサイトの準備ができたら、ターミナルでこれらファイルのあるディレクトリに移動し、次のコマンドを実行します。
docker compose up --buildデバック
http://localhost:8080/のURLにアクセスして既存のWordPressサイトが表示されることを確認し、開発環境用に調整を行います。
URLの置換
データベースに保存されているサイトURLを本番環境のURLから開発環境のURLに置換します。
これをしないと、開発環境(http://localhost:8080/)にアクセスしても本番環境の画像や内部リンクが表示されてしまい、開発環境の意味をなさなくなってしまいます。
パーマリンクの再設定
パーマリンク設定を再保存して、.htaccessの内容をリセットします。下層ページへアクセスできないときは、パーマリンクの再設定をしていないことが多いです。
.htaccess修正
.htaccessに本番環境固有の内容を記載している場合はそれを開発環境向けに修正しておきます。
キャッシュクリア
キャッシュプラグインなどを利用している場合は本番環境の情報でキャッシュされているので、すべて削除しておきます。
動作確認
既存のWordPressサイト(http://localhost:8080/)とphpMyAdmin(http://localhost:8083/)にアクセスできることを確認します。
まとめ
Dockerで既存WordPressサイトとphpMyAdminの開発環境をローカルに作る方法をご紹介しました。
ローカル環境に影響を与えずに開発や検証が行えるDocker環境は、本番環境のデバックやアップデート、修正など行うときのデモ環境として非常に有用です。ぜひご活用ください。
カナメグローバルホールディングスでは、お客様の課題を解決するホームページの制作から、安定した運用のための保守の支援を行っています。
ホームページに関するお悩みがありましたら、お気軽にお問い合わせ窓口よりご相談ください。




