WordPressを本番環境からdockerの開発環境にコピーした
◆やりたいこと
ローカルにwordpressの開発環境を構築したい。開発環境にはdockerを使用する。
さらに、構築した開発環境に本番環境をコピーする。
◆前提
wordpressの本番環境あり
サーバー:ロリポップ
SQLサーバー:MySQL(ロリポップのやつ)
ローカルの開発環境は無し
docker desktopをインストール済み
やること
①wordpressのファイルを丸ごとダウンロード
FTPクライアントとかを使ってダウンロードする
②コンテナ作成
wordpressとMySQLの環境
③sqlファイル取得・編集
ロリポップサーバーからエクスポートしてダウンロード
dockerコンテナにコピー
④DBのインポート
docker内のMySQLにインポート
参考
②コンテナ作成
ymlファイルは以下とした。
version: '3.8'
services:
wordpress:
image: wordpress:php7.4-apache
restart: always
ports:
- 8081:80
volumes:
- ./site:/var/www/html
dbname: # なんでもいいが、wp-config.phpファイルの DB_HOSTと同じ名前がおすすめ
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'password' # wp-config.phpファイルの DB_PASSWORD
MYSQL_DATABASE: 'database' # wp-config.phpファイルの DB_NAME
MYSQL_USER: 'user' # wp-config.phpファイルの DB_USER
MYSQL_PASSWORD: 'password' # wp-config.phpファイルの DB_PASSWORD
volumes:
- ./db/sqls:/docker-entrypoint-initdb.d
ここまでの状態で、localhostにアクセスすると、wordpressユーザー設定・パスワード作成画面みたいなのが開くと思います。(DBにアクセスできないため、新規で作成しようとしているのだと思います)
.htaccessの編集
私の場合、localhostにアクセスしたら、.htaccessのエラーが発生したため、修正しました。
.htaccess内のHeader行をコメントアウトしたら正常に動作しました。
③sqlファイル取得・編集
ダウンロードしたsqlファイルを開発環境用に編集する。
参考
・エクスポートしてダウンロードする
・sqlファイル内のURLをlocalhostに変更する(参考サイトと同様)
・※参考サイト内の”wp-config.phpを更新”は不要(②でDB名を本番と揃えてあるため)
先にインポートしてから、個別にレコードを編集するのでもいいですね。
④DBのインポート
編集したsqlファイルをコンテナのMySQLにインポートする。
参考
・sqlファイルをコンテナにコピーする
docker cp ./download.sql 538359e1e8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:/tmp/import.sql
docker exec -it 538359e1e8xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /bin/bash
mysql -u LAA0667847 -p LAA0667847-wkw3p1 < tmp/import.sql
インポートに失敗したら、”インポート済みのテーブルを削除してインポートし直す”というのを繰り返します。。