【コピペOK】DockerでWordPressのローカル環境をさくっと構築

Wordpress備忘録

前提

  • OSはLinux(筆者はUbuntu)であること
  • Dockerのインストールが済んでいること

ローカル環境の選定

WordPressのローカル環境を用意するわけですが、方法はいくつかあります。

Local (by WP Engine)WordPress専用GUIで簡単操作。たま~に案件で見る。
XAMPPApache+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部分はいらないかも。

サービス イメージ 役割
dbmysql:8.0データベースサーバー
wordpresswordpress:latestWordPressアプリ本体
phpmyadminphpmyadmin: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
Q
Dockerを終了してもデータは消えないの?
A

Dockerを終了= docker compose down 後もデータは保持されます。

  • db_data(名前付きボリューム):削除されない
  • ./wordpress(バインドマウント):ホストPC上の実ディレクトリなので常に保持

docker compose down -v を実行した場合のみデータが削除されます。

WordPressの初期設定

http://localhost:8080 にアクセスすると初期設定画面が表示されます。
適宜、ブラウザ上の画面から言語選択・ユーザー情報を入力しましょう。
特にユーザー名とパスワードは控えておくとよいです。

設定が完了すると、管理画面にログインできるはず。

まとめ

以上、DockerでWordPressのローカル環境を構築する手順でした。
慣れている方であれば、docker-compose.ymlを用意するだけで難なくと立ち上げられるかな~と思います。

次回はテーマの選定からCocoonのインストールまでをご紹介する予定です。
インストール時にちょっとしたつまづきもありましたので、同じ状況になった方の参考になれば幸いです。

ではまた次回!

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