プロダクションのWordPressをローカルにDockerで再現する[調査中メモ]
WordPressって別に詳しくないしあまり好きではない。
できるだけ触りたくないんだけど、男には長い人生においてWordPressを触らないといけない事象がしばし発生する。
今まさにやってて、うまくいかなかったんだけど、とりあえずメモを残しておく。
いいやり方ご存知の方いらっしゃったら教えていただけますと助かります。
docker-composeの設定
まずはプロダクション環境をローカルで再現する所から始める。
docker-composeを使う。
のだけど、プロダクションのDBダンプファイルをそのまま dbのvolumeに
./db-data/mysql.dump.sql:/docker-entrypoint-initdb.d/install_wordpress.sql
とかって設定してdocker内wordpressの初期データとして入れようとしても、ちゃんと動いてくれない。
多分httpアクセスあったらhttpsで自動リダイレクトする設定が効いてるような気がしてて、
DBのそこの部分を書き換えられればちゃんと動くような気がしてるけど未調査。
docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql"
# 下記はちゃんと動かなかった
# - ./.db-data/mysql.dump.sql:/docker-entrypoint-initdb.d/install_wordpress.sql
restart: always
environment:
MYSQL_ROOT_USER: root
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
restart: always
volumes:
# テーマファイルをプロダクションからDLして./themes/my_themeに置いておく
- ./themes/my_theme:/var/www/html/wp-content/themes/my_theme
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DEBUG: 1
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=db
- PMA_USER=root
- PMA_PASSWORD=wordpress
links:
- db
ports:
- 8080:80
volumes:
- /sessions
$ docker-compose up
phpmyadminも入れてみて、ここからプロダクションのDBダンプをインポートしてみたけど、それもうまくいかなかった。
themeファイル以外をdockerコンテナ内にぶちこむ
プロダクションから以下をDLしてきて、volumeなりを使って同じ場所に入れておく - wp-content/uploads/ - wp-content/plugins/
DBをエクスポート => dockerコンテナでインポート
管理画面でDBのエクスポート、インポートができる。
ほんとはdocker-compose.ymlでスマートにやりたいけど、一旦場当たり的に。

パーマリンク設定の反映
管理画面の設定 > パーマリング設定 より。
なぜかこれはDBインポートしても反映されてなかったので、手動で設定。
これで一旦プロダクションの状態を再現できた。
結論
WordPress触りたくない