すでに走ってるWordpress、ローカルに再現したくない??
※dockerインストールについては割愛させていただきます。
##ディレクトリ構造
コンテナ作成前
├── db-data
│ └── wordpress.sql.zip
├── docker-compose.yml
└── .env
##データの準備
###wp-contentの取得
テーマファイルなどが入ったwp-contentフォルダをftpサーバなどを介して取得しておく。
###sqlダンプファイルの取得
サーバーから直接エクスポートもしくは、BackWPupとういプラグインで簡単にデータをバックアップし取得することができる。
zip形式で取得し、そのままdb-dataディレクトリ下に設置する。
BackWPupの使い方について参考サイト:
BackWPUpで確実にWordPressのバックアップを取る方法
##docker-compose.ymlを作成
version: '3.3'
services:
mysql:
build:
context: ./docker/mysql/
restart: always
environment:
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ROOT_PASSWORD
ports:
- 3306:3306
volumes:
- mysql_data:/var/lib/mysql
- ./docker/mysql/init:/docker-entrypoint-initdb.d
wordpress:
build:
context: .
dockerfile: ./docker/wordpress/Dockerfile
depends_on:
- mysql
ports:
- 8080:80
restart: always
environment:
- WORDPRESS_DB_HOST
- WORDPRESS_DB_USER
- WORDPRESS_DB_PASSWORD
- WORDPRESS_DB_NAME
volumes:
- ./:/var/www/html
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
- PMA_ARBITRARY
- PMA_HOSTS
- PMA_USER
- PMA_PASSWORD
depends_on:
- mysql
ports:
- 8888:80
volumes:
mysql_data:
###補足
OS起動時に自動的にこのコンテナを起動させたくない場合は
restart: always
の記述を
restart: no
に変更すると良いと思います。
##envファイルを作成
ルートディレクトリ直下に.envファイルを設置します
MYSQL_DATABASE=wordpress
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_ROOT_PASSWORD=root
WORDPRESS_DB_HOST=mysql:3306
WORDPRESS_DB_USER=root
WORDPRESS_DB_PASSWORD=root
WORDPRESS_DB_NAME=wordpress
PMA_ARBITRARY=1
PMA_HOSTS=mysql
PMA_USER=root
PMA_PASSWORD=root
#dockerコンテナ起動
現在起動中のコンテナを確認
docker-compose ps
ymlで設定したポートと同じものがあればバッティングしてしまうので
起動中のコンテナは一度停止してください。
そしていよいよコンテナ起動。
docker-compose up -d
##wp-contentの入れ替え
起動するとwordpress関連のファイルが自動的に作成されるので、
ルートディレクトリ直下のwp-content/の中身を手元に準備しておいたバックアップファイルでまるごと置換する。
##データベースのドメイン置換
localhost:8888にアクセスし、phpmyadminでドメインを置換していく。
現在使用しているWordpressサイトのURLを http://localhost:8080/ で置換することで、
ローカル環境でWPを使用することができるようになる。
詳しい手順については、先人のありがたいサイトを参考にしていただくと大変わかりやすいかと思います。
(人のふんどしでなんとやら...)
phpMyAdminを使ってWordPressを別のドメインで使えるようにする方法
##Wordpress起動
http://localhost:8080/ にアクセス。
##補足
コンテナ停止
docker-compose stop
##まとめ
以上で、現在走っているWordpressサイトをローカルに再現することができました。
Dockerfileよりdocker-compose.ymlだと記述が完結でわかりやすくていいですね。
選ばれたのはdocker-composeでした。おわり。