Wordpressのローカル環境をDockerでつくる

## 目的
既存のWordpressサイトの開発環境を作りたくて、作成。
その備忘録

## まずはインストールしたいWordpressのバージョンを確認
すでに実行中のWordpressがあるのなら、
Wordpressの管理画面
→ツール
→サイトヘルス
→「情報」タブ
* Wordpress : wordpressのバージョン、
* サーバー : PHPのバージョン
* データベース : MySQLのバージョン

上記の３つを確認する。

Plugin「All-in-One WP Migration」を使うときは、既存のPHPのバージョンが違うとインポートが完了しないので、特にPHPのバージョンには注意。

## docker-compose.ymlを作る。
参考：
https://coosy.co.jp/blog/docker-environment/
https://github.com/chum9625/docker-compose-wp-master/blob/main/README.md
https://weblabo.oscasierra.net/wordpress-docker-compose/
https://blowup-bbs.com/wordpress-docker-development-environment/


私が採用したdocker-compose.ymlは以下のもの


```docker-compose.yml
services:
  wordpress:
    container_name: my-wp-container
    depends_on:
      - db
    image: wordpress:php7.4-apache　#今回はphp7.4で指定。
    volumes:
      - ./html:/var/www/html #wordpressファイル群格納用
      - ./wp-content:/var/www/html/wp-content #テーマ、プラグイン開発用
      - ./**my-theme**:/var/www/html/wp-content/themes/**my-theme**  #オリジナルテーマ開発用空テーマ**my-theme**部分は適宜変更。
    ports:
      - "8080:80" #ポート番号が被らないように
    restart: unless-stopped
    environment:
      WORDPRESS_DB_HOST: db:3306 #defaultのポート
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: root-pass
      WORDPRESS_DB_NAME: wordpress

  db:
    image: mysql:5.7
    ports:
      - "3307:3306" # 外部から 3307 ポートでアクセス(3306をほかのポートで使っているとき）
    volumes:
      - db_data:/var/lib/mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root-pass
      MYSQL_DATABASE: wordpress
      MYSQL_USER: db-user
      MYSQL_PASSWORD: db-pass

  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: db
    restart: unless-stopped
    ports:
      - "8000:80"　#ポート番号が被らないように
    
volumes:
  db_data: {}
  ```

`docker-compose.yml`はポート番号に注意して作成。
 WORDPRESS_DB_HOST: db:3306は、Docker内のポートなので変更しなくてOK。
 
私はこれで間違えて時間がかかった。


  :::note warn
注意
 
 
アクセスポートを変えたい場合は、
 ```
 db:
    ports:
      - "3307:3306" # 外部から 3307 ポートでアクセス(3306をほかのポートで使っているとき）
```
こちらを編集する。

:::
  ## 管理画面に入る
  ![wordpress-docker-compose-2-1536x710.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909506/632f2ef1-9300-7c7a-416d-3a3da82d059f.png)

  `http://localhost:8080` にアクセスすると、
  いつもの管理画面の設定がでてくるので初期設定する。

## Wordpressの引っ越し

https://www.caliberelectronics.com/all-in-one-wp-migration/

１．既存のWordpressサイトからAll-in-One WP Migrationを使って、ファイルをエキスポートする

２．All-in-One WP Migration の容量を添付のリンク参照にあげる。
このとき、
```
   volumes:
      - ./html:/var/www/html #wordpressファイル群格納用
      - ./wp-content:/var/www/html/wp-content #テーマ、プラグイン開発用
      - ./**my-theme**:/var/www/html/wp-content/themes/**my-theme**  #オリジナルテーマ開発用空テーマ**my-theme**部分は適宜変更。
```

で、ローカルにマウントしているので、ローカルの`./wp-content`のなかの
plugins－all-in-one-wp-migration-constants.phpを編集したら、
Docker内のファイルも編集される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909506/27c95bf1-446c-4654-9b94-fb0e1bef28b4.png)

容量あげたら、インポートして終了。
PHPのバージョンがちがうと、インポートできずに止まるので、注意。

:::note warn
注意
PHPのバージョンに注意してください。
:::

アップロードサイズをあげる方法はいろいろあるみたい。
https://www.vektor-inc.co.jp/post/upload_max_filesize/

## ルーティングの編集
このままだと、トップページは表示されるけど、下層ページは表示されないので、
`管理画面＞設定＞パーマリンク`で何もしないで更新を押す。
すると、.htaccessが更新されて、ルーティングを自動で設定してくれるので、下層ページも設定される。

https://web-guided.com/1319/


:::note info
ローカルにお引越し完了！
:::