WordPressのローカル開発環境をDockerで構築するときに欠かせないのが docker-compose.yml
ファイルです。
この記事では、実際に私が使用している docker-compose.yml
を例に、その役割や各項目の意味を初心者向けにわかりやすく解説していきます。
そもそも docker-compose.yml
って何?
Docker Compose は、複数のコンテナ(WordPress・MySQL・phpMyAdmin など)をまとめて管理するためのツールです。
その設定ファイルが docker-compose.yml
です。
このファイルに「どのサービスを使うか」「どうつなぐか」「どのファイルと同期するか」などを記述します。
基本的にはこのファイルがあれば、ターミナルで以下の1行を入力するだけでローカル環境を立ち上げられます。
docker compose up -d
使用している docker-compose.yml
状況によって内容を書き換える必要がありますが、ひとまず以下の内容で動かしています。
services:
db:
image: mysql:5.7
container_name: sample_wp_mysql
#restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wp_db
MYSQL_USER: wp_user
MYSQL_PASSWORD: root
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:php8.2-apache
container_name: sample_wp
depends_on:
- db
ports:
- "8204:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: root
WORDPRESS_DB_NAME: wp_db
WORDPRESS_DEBUG: 1
volumes:
- ./public_html:/var/www/html
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin_sample_ingrid
depends_on:
- db
ports:
- "8205:80"
volumes:
db_data:
各記載の意味
db
(MySQL)
WordPressが利用するデータベースです。
image
: 使用するDockerイメージ(ここではMySQL 5.7)restart:
コンテナが何らかの理由で停止した場合に自動的に再起動させるためですが、意図しない再起動が起こらないようにコメントアウトしています。container_name
: コンテナに付ける名前。サイト名を半角英字で入力することが多いです。environment
: DBの初期設定(rootパスワード、DB名、ユーザー名など)。基本変えません。volumes
: データ保存先を指定して中身を永続化(消えないように)しています。
wordpress
WordPress本体です。
image
: PHP8.2が使えるWordPressイメージ。作成したい環境によって変える必要があります。depends_on
: dbより後に起動するよう依存関係を定義ports
: ローカルの8204番ポートでアクセスできるように設定(http://localhost:8204)。コンテナごとに変える必要があります。environment
: WordPressがDBと接続するための情報volumes
: ローカルのpublic_html
フォルダと同期(ファイル編集が即反映される)
image
は、とりあえずローカル環境を作りたいという場合は、wordpress:latest
でOKです。
これは、WordPressの公式Dockerイメージの中で「最新安定版」を自動的に取得する設定です。
wordpress:latest
image: mysql:5.7 ← この記述は削除する
phpmyadmin
ブラウザ上でDBを操作できる便利ツールです。
image
: phpMyAdmin の公式イメージdepends_on
: dbが先に起動するように設定ports
: ローカルの8205番ポートでアクセス可能(http://localhost:8205)
ボリューム db_data
について
最下部の volumes:
セクションで db_data
を定義することで、MySQLのデータを保存するボリューム(外部ストレージのようなもの)を作っています。
これがあることで、コンテナを停止・再起動してもデータベースの中身が保持されます。
volumes:
db_data:
補足:ボリューム名の自動命名について
Docker Compose は、volumes:
に名前だけを指定した場合、自動的にボリューム名を次のように変換して保存します。
[プロジェクト名]_[ボリューム名]
たとえば、プロジェクト名が sample
の場合、実際に作成されるボリュームは:
sample_db_data
この名前はターミナルから docker volume ls
で確認できます。
注意:ボリュームの「残骸」について
volumes:
セクションで db_data
を定義しない場合、環境を構築するつど自動的にボリュームが作成されます。
開発中だと何度かコンテナを作り直すこともありますが、docker compose down
コマンドでコンテナを削除しても、ボリュームは削除されません。
そのため、プロジェクト名やボリューム定義が変わるたびに新しいボリュームが作成され、古いボリュームが残ってしまうことがあります。
これにより、知らず知らずのうちにローカルに使われていないボリュームが蓄積される可能性があります。
その場合は、以下のコマンドで確認や削除が行えます。
現在使われていないボリュームを確認するには、
docker volume ls
不要なボリュームを削除するには、
docker volume rm ボリューム名
または、未使用ボリュームをまとめて削除するには、
docker volume prune
このようにして、環境をクリーンに保つことができます。
まとめ
docker-compose.yml
を使って、WordPress・MySQL・phpMyAdmin の3つのコンテナを一括で構築・管理できます。
この記事が、これからDockerでWordPressのローカル環境を構築したい方の参考になれば嬉しいです。
サイト制作に関するご相談・お見積りなどお気軽にご相談ください。
新規サイト制作では、提案・制作から公開後の保守・運用・更新までトータルで、あなたのお力になります。
既存のサイトでも、簡易な修正や機能追加、更新のお手伝いやレッスンなど、幅広く対応させていただきます。
まずは、お気軽に今お持ちのお悩みをお聞かせください。
コメント