Docker で WordPress の開発環境を設定するまでの備忘録

Docker Desktop for Mac を使って、WordPressの実行環境を構築するまでの備忘録です。

# 環境

* mac OS10.14.6

# Dockerのセットアップ

下記から

* https://www.docker.com/

[Products] から [Docker Desktop] を選んで [Download Docker Desktop for Mac] を押下します。
事前にサインインしてユーザー登録する必要があります。
ダウンロードが終わったらインストールします。

# Docker Compose を使った、WordPressのセットアップ

適当なディレクトリを作成します。

ディレクトリに入って、下記を参考に[docker-compose.yml]ファイルを作成します。

* https://docs.docker.com/compose/wordpress/

[docker-compose up -d]を実行します。

```bash
$ docker-compose up -d
db-container02 is up-to-date
Recreating wp-container02 ... done
$ ls -la
total 8
drwxr-xr-x   5 yoshida  staff  160 11 16 09:17 .
drwxr-xr-x   5 yoshida  staff  160 11 16 08:01 ..
-rw-r--r--   1 yoshida  staff  741 11 16 09:17 docker-compose.yml
drwxr-xr-x@ 16 yoshida  staff  512 11 16 09:17 html
drwxr-xr-x   2 yoshida  staff   64 11 16 09:17 vendor

$ tree -L 2
.
├── docker-compose.yml
├── html
│   ├── index.php
│   ├── license.txt
│   ├── readme.html
│   ├── wp-activate.php
│   ├── wp-admin
│   ├── wp-blog-header.php
│   ├── wp-comments-post.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
└── vendor
```

## 参考 docker-compose.yml

```docker-compose.yml
version: '3.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
     container_name: db-container

   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
       WORDPRESS_DB_NAME: wordpress
     volumes:
       - ./html:/var/www/html
       - ./vendor:/var/www/vendor
     container_name: wp-container
volumes:
    db_data: {}
```

## 注意点

* 複数のコンテナを利用している場合は、適宜コンテナ名を変更する。
* WordPressサーバーが利用するポートが被っている時は変更する。(ex. "8080:80")
* [volumes:]に[./html:/var/www/html]を書いておくと、Dockerを停止した時もファイルがそのまま残リます。

# 起動確認

指定したポートでローカルサーバーの起動を確認します。
下記の画面が表示されたらひとまずOKです。

<img width="1079" alt="スクリーンショット 2019-11-16 9.27.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/5fd22eca-2e2a-18c7-9ba8-9a03a6abd9e7.png">

# WordPressのインストール

言語を選択して[続ける]を押下します。

<img width="481" alt="スクリーンショット 2019-11-16 9.39.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/98639bcf-0710-90d6-885d-7e46f4e0e522.png">

[ようこそ]画面でタイトル、ユーザー名、パスワード、メールアドレスを入力して
[WordPressをインストール]を押下します。
サイトをインデックスしないようにするにチェックもしておきます。
<img width="691" alt="スクリーンショット 2019-11-16 9.42.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/8a9384c2-c350-b43d-761a-4a9e11bb4eb3.png">

次の画面が表示されます。
<img width="655" alt="スクリーンショット 2019-11-16 9.46.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/c7259137-885d-5d58-49d8-4e3bc0a1d94f.png">

設定したユーザー名、パスワードでログインします。
<img width="410" alt="スクリーンショット 2019-11-16 9.47.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/a37ecd85-6508-6451-e55d-19a2a1f6825e.png">

管理画面が表示されます。
<img width="1278" alt="スクリーンショット 2019-11-16 9.49.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/d814f271-7b93-f36d-2223-b849a009f516.png">

お疲れ様でした。

---

# Dockerの停止

起動したら停止しないとね。
裏で動いていてポートを塞いだりとかあるので。。。

## 起動しているdockerコンテナの確認

`docker ps` で 起動しているコンテナを確認します。

```bash
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
e4b18df4e27d        wordpress:latest    "docker-entrypoint.s…"   2 weeks ago         Up 8 hours          0.0.0.0:8080->80/tcp   wp-container02
1e15abc10742        mysql:5.7           "docker-entrypoint.s…"   2 weeks ago         Up 8 hours          3306/tcp, 33060/tcp    db-container02
deabc32ff640        wordpress:latest    "docker-entrypoint.s…"   2 months ago        Up 8 hours          0.0.0.0:8000->80/tcp   wp-container
bb6127b6cc39        mysql:5.7           "docker-entrypoint.s…"   2 months ago        Up 8 hours          3306/tcp, 33060/tcp    db-container
```

## docker-compose stop して停止

`docker-compose` で起動した時は、`docker-compose stop`で停止します。

`docker-compose ps` で起動してるコンテナサービスを確認して

```bash
$ docker-compose ps
    Name                  Command               State          Ports
----------------------------------------------------------------------------
db-container   docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
wp-container   docker-entrypoint.sh apach ...   Up      0.0.0.0:8000->80/tcp
```

`docker-compse stop` で停止します。

```bash
$ docker-compose stop
Stopping db-container ... done
Stopping wp-container ... done
```

`docker ps` で停止を確認します。

```bash
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
```


---

# 参考リンク

* [Quickstart: Compose and WordPress]https://docs.docker.com/compose/wordpress/