ローカルにdockerでwordpress環境を作成する

本記事ではdockerを使って、ローカルで動作するwordpress環境を作成します。

# 対象
- なるべく簡単にwordpressの環境を作りたい人
- ローカルで動くwordpressの環境を作りたいひと
- 既存のwordpress開発環境をdockerで作成し直したい人

# 前提条件
docker for desktopインストール済み
または
dockerとdocker composeコマンドが実行できること

# 手順概要
1. ファイル＆ディレクトリ作成
1. docker-compose.ymlを記述
1. コンテナの作成
1. wordpressの初期設定


# ファイル＆ディレクトリ作成
適当なディレクトリに以下のファイルとディレクトリを作成してください。

```
.
├── docker-compose.yml
└── wordpress
```

# docker-compose.ymlを記述
docker-compose.ymlに作成するコンテナの情報を記述します。環境変数などは、自分用に変更して使用してください。また、mysqlとwordpressのバージョンは自分に合ったものを使用してください。
基本的に最新のものを使用で問題ないとは思いますが、<font color="Red">latestはやめましょう。</font>他環境との整合性が取れなくなる可能性があります。

```docker-compose.yml
version: "3" #docker-composeのバージョン

services:
	db: #wordpressで使用するmysqlコンテナを作成
	  name: wordpress_db
    image: mysql:5.7
    volumes: #データを永続化させるためにローカルのファイルにマウント
      - db_data:/var/lib/mysql
    restart: always
    environment: #mysqlの環境変数（自由に設定する）
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: password

	wordpress: #wordpressを実行するコンテナを作成
		name: wordpress_server
    depends_on: #依存関係を記述
      - db
    image: wordpress:latest
    ports: #ポート番号を指定。他で使っている場合は左側を変更
      - "8080:80"
    restart: always
    volumes: #データを永続化させるためにローカルのファイルにマウント
      - ./wordpress/:/var/www/html
    environment: #wordpressの環境変数(上で作成したDBを指定)
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password
volumes:
  db_data:

```

### docker-composeの簡単な解説
全くわらかない場合は以下がおすすめです
[docker-compose.ymlの書き方について解説してみた](https://qiita.com/yuta-ushijima/items/d3d98177e1b28f736f04)

#### 重要なポイント
1. 環境変数を設定
mysqlのDB情報、wordpressに接続するDB情報を各コンテナのenvironmentで記述してします。
そのため、ローカルではないデータベースを使用したい場合は、ここを書き換えるだけで大丈夫です。
2. データの永続化
コンテナを再作成してもデータが消えないように、mysql・wordpressともにローカルのファイルにマウントしています。


# コンテナの作成
docker-compose.ymlがあるディレクトリで以下のコマンドを実行します。

```sh
docker-compose up -d
```

初回起動時は時間がかかりますが、ターミナルに以下のようなメッセージが表示されると作成完了です。
何かエラーが出た場合は修正してください。大抵ググると同じ悩みを経験した人がいます。

```
Status: Downloaded newer image for wordpress:5.7.1-php7.4-apache
Creating wordpress-local_db_1 ... done
Creating wordpress-local_wordpress_1 ... done
```

# wordpressの初期設定
[http://localhost:8080/](http://localhost:8080/)にアクセスします。
すると以下のような画面が表示されますので、表示にしたがって設定を行いましょう。

コンテナ作成直後は、エラーが表示されるかもしれません。その場合は時間を空けてアクセスし直してください。

![スクリーンショット 2021-05-06 21.42.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309460/37b645f0-c77f-2e72-b12a-a06c38d003bf.png)

### 実行後のディレクトリ構成
以下のようにwordpressディレクトリ下にファイルが作成されています。
テーマなどを自作したい場合は、以下を追加・修正することでコンテナの環境にも反映されます。

```
.
├── docker-compose.yml
└── wordpress
    ├── index.php
    ├── license.txt
    ├── readme.html
    ├── wp-activate.php
    ├── wp-admin
    ├── wp-blog-header.php
    ├── wp-comments-post.php
    ├── wp-config-docker.php
    ├── wp-config-sample.php
    ├── wp-config.php
    ├── wp-content
    ├── wp-cron.php
    ├── wp-includes
    ├── wp-links-opml.php
    ├── wp-load.php
    ├── wp-login.php
    ├── wp-mail.php
    ├── wp-settings.php
    ├── wp-signup.php
    ├── wp-trackback.php
    └── xmlrpc.php
```

# この環境のメリット＆デメリット
- (＋)ローカルでソースコードを変更できる
- (＋)簡単に環境が作成できる
- (ー)本番環境用に環境変数などを変更する必要がある