1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerを使ってWordPressのローカル開発環境を構築する

Last updated at Posted at 2022-05-23

WordPressのローカル開発環境を作るのに、Dockerを使ったらさくっと構築できたので書いてみます
Docker最高!

ツール検討

いろいろありました。初心者はLocalがおすすめらしいです。

  • Local
    • 簡単にWordPressのローカル環境を構築できるツール
    • おすすめしているサイトが多い
  • XAMPP(ザンプ)
    • MariaDB、PHP、Perl を簡単にインストールできる Apache ディストリビューション
  • MAMP
    • Apache HTTP Server、MySQL、PHPをまとめてインストールできるツール
  • Docker
    • コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのプラットフォーム
    • Dockerコンテナ内でWordPress開発環境を簡単に構築できる

今回、新たなツールをインストールしたくないのと、仮想環境で管理したい、という思いがあったので
もともと私のマシンに入っているDocker Desktop for Windowsを選びました

環境構築手順

公式からチュートリアルが出ているので、チュートリアル通りに実施したらいけました。
チュートリアル通りだと少し不便そうだったので、一部修正して使っています。

前提

  • OS: Windows 10
  • Docker Desktop for Windows バージョン4.5.1

プロジェクトの定義

  • プロジェクト用ディレクトリを作成する
    • ディレクトリ名は任意
  • プロジェクト用ディレクトリ内に、docker-compose.yml ファイルを作成する
    • 内容は公式のチュートリアル参照。執筆当時に公開されていた内容をコピペしたものが以下
    • WordPressの推奨バージョンを満たしているかを一応確認する
docker-compose.yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

docker-compose.yml修正

このままでも環境構築は可能ですが、2点の問題があるため、docker-compose.ymlを修正しました

WordPressの資材をローカルに保存する

チュートリアルだとWordPressコンテナ内の/var/www/htmlにインストールされた資材を参照している
ローカルから資材を覗くことができない&コンテナを削除すると資材がすべて消えてしまう
そのため、WordPressの資材をローカルに保存するようにする

  • プロジェクト用ディレクトリにWordPressの資材格納用ディレクトリを作成する
    • 今回はwordpressフォルダを作成した
  • docker-compose.ymlファイルのwordpressに追記する
   wordpress:
     volumes:
       - ./wordpress:/var/www/html

DBに接続できるようにする

チュートリアル通りだとローカルからMySQLに接続することができない
そのため、DBに接続できるようにポート番号を指定する

  • docker-compose.ymlファイルのdbに追記する
   db:
     ports:
       - "3306:3306"

全体はこんなかんじ。(+は修正で追記した部分)

docker-compose.yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
+    ports:
+      - "3306:3306"
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
+    volumes:
+      - ./wordpress:/var/www/html
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

プロジェクト構築

準備ができたのであとはdockerこんぽうずの出番です。

  • プロジェクト用ディレクトリ上でdocker-compose up -dを実行する
    • 不足する Docker イメージがあれば取得される
    • WordPressとMySQLのコンテナが作成&起動される
PS ■■■■■■■■■ > docker-compose up -d
Creating network "web_default" with the default driver
Creating volume "web_db_data" with default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
c32ce6654453: Pull complete
415d08ee031a: Pull complete
(略)
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
214ca5fb9032: Pull complete
cd813a1b2cb8: Pull complete
(略)
Status: Downloaded newer image for wordpress:latest
Creating web_db_1 ... done
Creating web_wordpress_1 ... done

WordPressの起動確認

  • ブラウザを開き、http://localhost:8000 にアクセス
  • WordPressの画面が表示される
    • 画面表示に従って言語設定、ユーザ設定を行うと、WordPressの管理画面が表示される

参考文献

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?