docker-compose.ymlの解説(WordPressのローカル環境構築)

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のローカル環境を構築したい方の参考になれば嬉しいです。

サイト制作に関するご相談・お見積りなどお気軽にご相談ください。

新規サイト制作では、提案・制作から公開後の保守・運用・更新までトータルで、あなたのお力になります。

既存のサイトでも、簡易な修正や機能追加、更新のお手伝いやレッスンなど、幅広く対応させていただきます。

まずは、お気軽に今お持ちのお悩みをお聞かせください。

コメント

タイトルとURLをコピーしました