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

インポートに失敗したら、”インポート済みのテーブルを削除してインポートし直す”というのを繰り返します。。