前提
- OSはLinux(筆者はUbuntu)であること
- Dockerのインストールが済んでいること
ローカル環境の選定
WordPressのローカル環境を用意するわけですが、方法はいくつかあります。
| Local (by WP Engine) | WordPress専用GUIで簡単操作。たま~に案件で見る。 |
| XAMPP | Apache+MySQL+PHPをまとめてインストール。ローカル環境といえばこれ。 |
| Docker | 本番環境との一致が楽。エンジニアに特に好まれる気がする。 |
今回は以下の理由からDockerを採択。
- PHPやMySQLのバージョンをレンタルサーバーに合わせて指定できる
- 移行トラブルが少ない(ローカルでは動いたのに本番で動かない!が少ない)
- docker-compose.ymlファイルで環境を丸ごと共有・再現できる
- 環境汚染がない=PC本体にApacheやMySQLをインストールしない ←めちゃくちゃ重要。
Docker環境の構築
ディレクトリ構成
プロジェクトディレクトリ(ここではapp)配下にdocker-compose.ymlを作成します。
wordpress/は作成せずとも、勝手にDocker起動時に作られるのでOK(後述)。
app/
├── docker-compose.yml
└── wordpress/ ← WordPressファイルが入る
docker-compose.ymlの中身
WordPressとMySQL、phpMyAdminの3サービスで構成することにしました。
MySQL Workbenchなど、その他のGUIを使用される方・黒画面で十分な方はphpMyAdmin部分はいらないかも。
| サービス | イメージ | 役割 |
|---|---|---|
| db | mysql:8.0 | データベースサーバー |
| wordpress | wordpress:latest | WordPressアプリ本体 |
| phpmyadmin | phpmyadmin:latest | データベース管理GUI(http://localhost:8081) |
services:
db:
image: mysql:8.0
container_name: app_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass(任意の文字列)
MYSQL_DATABASE: app_db
MYSQL_USER: user
MYSQL_PASSWORD: userpass(任意の文字列)
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
container_name: app_wp
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: app_db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: userpass(任意の文字列)
volumes:
- ./wordpress:/var/www/html
depends_on:
- db
phpmyadmin:
image: phpmyadmin:latest
container_name: app_phpmyadmin
restart: always
ports:
- "8081:80"
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: rootpass(任意の文字列)
depends_on:
- db
volumes:
db_data:
WordPressとMySQLは環境変数で接続情報を共有しています。
簡単に言えば、DBのユーザー名・パスワードは同じじゃないとダメってことです。
両側の値が一致していないと、接続エラーとなってしまいます。
ここでは安易なパスワードとしていますが、必ず推測されにくい安全な文字列にしましょう。
Docker起動時に作られるディレクトリ
先ほど触れましたが、Docker起動時、wordpressディレクトリが作成されるのは以下の記述があるからです。
wordpress:
volumes:
- ./wordpress:/var/www/html
これは「ホストの ./wordpress ディレクトリ」と「コンテナ内の /var/www/html」を紐付けてね、という設定になります。
docker compose up -d を実行すると、Dockerが ./wordpress ディレクトリが存在しないことを検知し、自動的に作成&コンテナ起動後にWordPressのファイル一式をそこに展開してくれます。
つまり手動で mkdir wordpress する必要がなく、初回起動時にDockerが全部やってくれるというわけです。すげえや。
Docker起動
docker-compose.ymlファイルを更新したところで、さっそく docker compose up -d でDockerを立ち上げましょう。
作成したappディレクトリで実行します。
コマンドラインでこんな感じになればOK。
~/project/app$ docker compose up -d
[+] Running 5/5
✔ Network app_default Created 0.1s
✔ Volume "app_db_data" Created 0.0s
✔ Container app_db Started 0.5s
✔ Container app_phpmyadmin Started 1.0s
✔ Container app_wp Started 1.0s
- QDockerを終了してもデータは消えないの?
- A
Dockerを終了=
docker compose down後もデータは保持されます。- db_data(名前付きボリューム):削除されない
- ./wordpress(バインドマウント):ホストPC上の実ディレクトリなので常に保持
docker compose down -vを実行した場合のみデータが削除されます。
WordPressの初期設定
http://localhost:8080 にアクセスすると初期設定画面が表示されます。
適宜、ブラウザ上の画面から言語選択・ユーザー情報を入力しましょう。
特にユーザー名とパスワードは控えておくとよいです。
設定が完了すると、管理画面にログインできるはず。
まとめ
以上、DockerでWordPressのローカル環境を構築する手順でした。
慣れている方であれば、docker-compose.ymlを用意するだけで難なくと立ち上げられるかな~と思います。
次回はテーマの選定からCocoonのインストールまでをご紹介する予定です。
インストール時にちょっとしたつまづきもありましたので、同じ状況になった方の参考になれば幸いです。
ではまた次回!


