PR

Dockerを使ったWordPressローカル開発環境の構築方法

WordPress Docker
広告

Web開発においてローカル環境の構築は重要なステップです。

特にWordPressの開発を行う場合、本番環境に影響を与えずに試行錯誤を行うことが可能になります。

本記事では、Dockerを使用してWordPressのローカル開発環境を構築する方法を詳しく解説します。

Dockerとは?

Dockerは、アプリケーションの実行環境をコンテナ化するツールです。

通常の仮想マシンより軽量で、複数の環境を簡単に管理・共有することができます。

Dockerを利用することで、異なるOS間でも統一された環境を手軽に構築できるため、開発の効率が向上します。

環境構築の手順

WordPressのローカル環境をDockerで構築するための手順は、以下の6ステップに分かれます。

Docker Desktopをインストールする

最初に、Docker Desktopをインストールします。使用しているOSに適したインストーラを以下の公式サイトからダウンロードしてインストールします。

公式ダウンロードページDocker Docs

Docker Desktopを起動する

Dockerのインストールが完了したら、アプリケーションを起動します。

初回起動時にはログインを求められる場合がありますが、Docker Hubのアカウントを作成しログインしてください。

広告

作業フォルダを作成する

WordPress環境を構築するための設定ファイルを作成するフォルダ(ディレクトリ)を準備します。

以下の手順に沿って作成してください。

  1. 適当なフォルダを作成します(例:docker_wordpress)。
  2. このフォルダ内に、設定ファイルを保存するサブフォルダも用意します。

フォルダの作成場所は自由ですが、管理しやすい場所を選んでください。

docker-compose.yml ファイルを作成する

作成したフォルダ内に docker-compose.yml という名前のファイルを作成します。

このファイルには、WordPressおよび関連サービスの設定を記述します。

作成した docker-compose.yml に、以下のコードを記述します。

name: my_project_wordpress

version: '3.8'

services:
  # MySQLデータベース
  db:
    image: mysql:5.7
    container_name: wordpress_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
    volumes:
      - db_data:/var/lib/mysql

  # WordPressアプリケーション
  wordpress:
    image: wordpress:latest
    container_name: wordpress_app
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db

  # phpMyadmin
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: wordpress_phpadmin
    restart: always
    depends_on:
      - db
    ports:
      - 8081:80  

# データ永続化用のボリューム
volumes:
  db_data:
  wordpress_data:

ここで設定している内容は以下の通りです。

  • MySQL:WordPressのデータベースに使用
  • WordPress:最新のWordPressコンテナを起動
  • phpMyAdmin:データベース管理ツールとしてMySQLのユーザインターフェースを提供
  • ボリューム設定:データが消えないように永続化
広告

Dockerコンテナを起動する

ターミナルやコマンドプロンプトを開き、作成した docker-compose.yml があるディレクトリに移動します。以下のコマンドを実行して環境を構築します。

docker-compose up -d
  • -d オプションは、コンテナをバックグラウンドで実行するためのものです。
  • 初回実行時は、WordPressとMySQLのイメージがダウンロードされます。

環境の確認

すべてのコンテナが正常に起動しているかどうかを確認するには、以下のURLにアクセスしてください。

WordPressの管理画面

http://localhost:8080

ブラウザでWordPressのセットアップ画面が表示されれば、環境構築は成功です。

 WordPressのセットアップ

  1. ブラウザで http://localhost:8080 にアクセスします。
  2. WordPressの初期設定画面が表示されるので、以下の情報を入力します。
    • サイトのタイトル
    • ユーザー名
    • パスワード
    • メールアドレス
  3. 「WordPressをインストール」をクリックしてセットアップを完了します。

phpMyAdmin

http://localhost:8081
広告

ここまで来れば、Dockerを使ったWordPress環境の構築は完了です!

データの永続化

docker-compose.yml で定義した volumes により、データベースのデータとWordPressのファイルはホストマシンに永続化されます。

ボリュームの場所は、以下のコマンドで確認できます。

docker volume ls

カスタマイズ

テーマやプラグインの追加:
WordPressの管理画面からテーマやプラグインを追加できます。

設定ファイルの編集:
wordpress_data ボリューム内の wp-config.php を直接編集することも可能です。

コンテナの管理

コマンド

コンテナの停止

docker-compose stop

コンテナの再起動

docker-compose restart

ログの確認

docker-compose logs -f

コンテナの削除

docker-compose down

コンテナの状態確認

docker-compose ps
広告

Question

docker-compose down と docker-compose stopとどう違う?

Answer

docker-compose down と docker-compose stop は似たような動作をするように見えますが、実際には異なる挙動をします。

以下に詳しく説明します。

docker-compose stop

  • 動作: 実行中のコンテナを停止しますが、コンテナやネットワーク、ボリュームは削除しません。
  • 影響:
    • コンテナは停止状態になりますが、コンテナ自体は残ります。
    • データは保持されます(ボリュームやネットワーク設定もそのまま)。
  • 再起動docker-compose start または docker-compose up -d で再開できます。
  • 使用例: docker-compose stop
    • コンテナを一時的に停止したい場合に使用します。

docker-compose down

  • 動作: コンテナを停止し、さらにコンテナ、ネットワーク、ボリューム(オプション)を削除します。
  • 影響:
    • コンテナが完全に削除されます。
    • ネットワークも削除されます。
    • ボリュームはデフォルトでは削除されませんが、--volumes オプションを付けるとボリュームも削除されます。
  • 再起動docker-compose up -d で再度コンテナを作成する必要があります。
  • 使用例: docker-compose down
    • コンテナを完全に削除したい場合に使用します。
    • ボリュームも含めてすべて削除したい場合は、docker-compose down –volumes
コマンドコンテナの状態ネットワークボリューム再起動方法
docker-compose stop停止保持保持docker-compose start または docker-compose up -d
docker-compose down削除削除保持(オプションで削除可)docker-compose up -d で再作成

補足

  • ボリュームの扱い:
    • docker-compose down では、デフォルトではボリュームは削除されません。ボリュームも含めて完全にクリーンアップしたい場合は、--volumes オプションを追加します。
      docker-compose down –volumes
    • ボリュームを削除すると、データベースのデータなどが失われるため、注意が必要です。
  • docker-compose up -d:
    • コンテナを新しく作成または再作成する場合に使用します。
    • 設定ファイル(docker-compose.yml)に変更がある場合や、コンテナを再作成したい場合に適しています。
広告

Dockerコンテナ内のファイルやディレクトリを確認する方法

Dockerコンテナ内のファイルやディレクトリを確認するには、docker exec コマンドを使用してコンテナ内でシェルを実行し、ファイルシステムを探索します。

以下に、具体的な手順を説明します。

コンテナ内でシェルを実行する

WordPressコンテナ(例: wordpress_app)内でシェルを実行するには、以下のコマンドを実行します。

docker exec -it wordpress_app /bin/bash
  • -it: インタラクティブモードでシェルを実行します。
  • wordpress_app: コンテナの名前(またはID)。
  • /bin/bash: シェルの種類(Bash)。

もしコンテナにBashがインストールされていない場合、代わりに /bin/sh を使用します。

docker exec -it wordpress_app /bin/sh

ディレクトリやファイルを確認する

シェルが起動したら、Linuxの標準コマンド(lscdcat など)を使用して、ファイルやディレクトリを確認できます。

例: /var/www/html ディレクトリの内容を確認

 ◎ディレクトリに移動

cd /var/www/html

 ◎ディレクトリ内のファイルやサブディレクトリを一覧表示

ls

これで、/var/www/html 以下のファイルやディレクトリが表示されます。

 ◎特定のファイルの内容を確認

例えば、wp-config.php の内容を確認するには、以下のコマンドを実行します。

cat wp-config.php
広告

コンテナ内のシェルを終了する

シェルを終了するには、exit コマンドを実行します。

exit

ワンライナーでディレクトリやファイルを確認する

シェルを起動せずに、直接コマンドを実行してディレクトリやファイルを確認することもできます。

例: /var/www/html ディレクトリの内容を確認

docker exec wordpress_app ls /var/www/html

例: 特定のファイルの内容を確認

docker exec wordpress_app cat /var/www/html/wp-config.php

GUIツールを使用する(オプション)

Dockerコンテナ内のファイルをGUIで確認したい場合は、以下の方法があります。

VS CodeのDev Containers拡張機能を使用

VS Codeを開き、Dev Containers 拡張機能をインストールします。

実行中のコンテナ(例: wordpress_app)を選択します。

VS Codeのエクスプローラーで、コンテナ内のファイルシステムを確認できます。

VSCodenで確認したDockerコンテナ内のファイルやディレクトリ
広告

dockerdesktopアプリから確認

まとめ

  • シェルを起動して確認: docker exec -it wordpress_app /bin/bash
  • ワンライナーで確認: docker exec wordpress_app ls -l /var/www/html
  • GUIツールを使用: VS Codeの Dev Containers 拡張機能dockerdesktopアプリ使用

これで、Dockerコンテナ内のファイルやディレクトリを簡単に確認できるようになります。

データのエクスポート

Dockerで作成したWordPressのデータをローカルパソコンに持ってくるには、docker cp コマンドを使用します。

このコマンドは、コンテナ内のファイルやディレクトリをローカルにコピーするためのものです。

以下に具体的な手順を説明します。

docker cp コマンドの基本構文

docker cp <コンテナ名>:<コンテナ内のパス> <ローカルのパス>
  • <コンテナ名>: ファイルをコピーしたいコンテナの名前またはID。
  • <コンテナ内のパス>: コンテナ内のファイルまたはディレクトリのパス。
  • <ローカルのパス>: ファイルをコピーするローカルのパス。

特定のファイルをコピーする手順

例: WordPressコンテナから wp-config.php をローカルにコピー

  1. コンテナ名を確認
    • コマンド docker psで実行中のコンテナを確認します。
    • 例: wordpress_app という名前のコンテナがあるとします。
  2. ファイルをローカルにコピー
    • 以下のコマンドを実行して、コンテナ内の /var/www/html/wp-config.php をローカルのカレントディレクトリにコピーします。
      docker cp wordpress_app:/var/www/html/wp-config.php ./wp-config.php
    • これで、カレントディレクトリに wp-config.php がコピーされます。
  3. ファイルを確認
    • ローカルのカレントディレクトリに wp-config.php が存在することを確認します。

特定のディレクトリをコピーする手順

例: WordPressコンテナから wp-content/uploads ディレクトリをローカルにコピー

  1. コンテナ名を確認
    • コマンド docker psで実行中のコンテナを確認します。
    • 例: wordpress_app という名前のコンテナがあるとします。
  2. ディレクトリをローカルにコピー
    • 以下のコマンドを実行して、コンテナ内の /var/www/html/wp-content/uploads ディレクトリをローカルの ./wp-uploads ディレクトリにコピーします。
      docker cp wordpress_app:/var/www/html/wp-content/uploads ./wp-uploads
    • これで、カレントディレクトリに wp-uploads ディレクトリが作成され、その中にファイルがコピーされます。
  3. ディレクトリを確認
    • ローカルの wp-uploads ディレクトリを確認し、ファイルが正しくコピーされていることを確認します。
広告

ローカルからコンテナにファイルをコピーする場合

逆に、ローカルのファイルをコンテナ内にコピーする場合も docker cp コマンドを使用できます。

構文は以下のとおりです。

docker cp <ローカルのパス> <コンテナ名>:<コンテナ内のパス>

例: ローカルの wp-config.php をコンテナにコピー

docker cp ./wp-config.php wordpress_app:/var/www/html/wp-config.php

注意点

  • ファイルの所有者と権限:
    • docker cp でコピーしたファイルの所有者や権限は、コンテナ内の設定に依存します。必要に応じてローカルで調整してください。
  • 実行中のコンテナ:
    • docker cp は実行中のコンテナに対して使用できます。コンテナが停止している場合は、まずコンテナを起動してください。

6. まとめ

  • docker cp コマンドを使用して、コンテナ内の特定のファイルやディレクトリをローカルにコピーできます。
  • 例:
    • 単一ファイル: docker cp wordpress_app:/var/www/html/wp-config.php ./wp-config.php
    • ディレクトリ: docker cp wordpress_app:/var/www/html/wp-content/uploads ./wp-uploads

これで、Dockerコンテナ内の必要なファイルを簡単にローカルに持ってくることができます。

まとめ

本記事では、Dockerを用いてWordPressのローカル環境を手軽に構築する方法を紹介しました。

Dockerを活用することで、OSや環境の違いに関係なく統一した開発環境を整えることができます。

また、複数のプロジェクトで同じ環境を簡単に再現できるため、チーム開発にも適しています。

WordPressだけでなく、他のCMSや開発ツールにも応用できるため、ぜひDockerを活用しながら効率的な開発環境を整えてみてください。

以下のリンクでは、WordPressに関する記事をまとめています。各記事をクリックして、詳しい情報をご確認ください。

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