0
1

More than 3 years have passed since last update.

DockerComposeでWordpressをローカルに再現する

Posted at

すでに走ってる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を作成

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ファイルを設置します

.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でした。おわり。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1