Hello はてなブログ ~WordPress on Dockerの備忘録~

はじめまして, Igarashiです.

最近Qiita(https://qiita.com/Dai7Igarashi)をはじめたんですが, 何でしょう, Qiitaって"綺麗に書かなきゃ"って思ってしまうんですよね. 構成がしっかりしているからでしょうか...

で, なかなか更新できずじまい. コードとか書いて備忘録書こうと思っても, サクッと書けないんですよね^^;


ということで備忘録ははてなブログ, 清書はQiitaって感じで使い分けようと思います!(なので読みにくいかもしれませんが悪しからず...汗)

 

 

公開済みのWordPressをローカルで開発

経緯

友達がWordPressでサイトを構築したんですが, その一部を作ることになりました. オンラインで作業してもいいのですが

  • jsとか各種ファイルの書き換えが大変そう
  • ミスしたら復元が大変そう

ということがあったので, ローカルでWordPressの開発環境を作ることにしました.

実行環境

docker-composeの設定

WordPressMySQLのイメージ取得とコンテナ起動

Docker for Machttps://docs.docker.com/)をインストールします.

作業フォルダを作成してそこに移動します. そのフォルダ直下にdocker-compose.ymlを以下の内容で保存.

version: '3.3'

services:
   db:
     image: mysql:5.6
     volumes:
       # - ./db_data:/var/lib/mysql
       # コンテナ起動時に読み込まれるinstall_wordpress.sqlを読み込みたいdumpファイルで置換
       - ./db_data/読み込みたいsqlファイル.sql:/docker-entrypoint-initdb.d/install_wordpress.sql
     restart: always
     container_name: "wp_yes_db_1"
     environment:
       MYSQL_ROOT_PASSWORD: ①ルートパスワード(ex. rootpass)
       MYSQL_DATABASE: ②mysqlで作成されるデータベース名(ex. my_db)
       MYSQL_USER: ③データベースにアクセスするユーザ名(ex. user)
       MYSQL_PASSWORD: ④データベースにアクセスするパスワード(ex. pass)

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     container_name: "wp_yes_wordpress_1"
     environment:
       # DB_HOST名は起動したmysqlのコンテナ名:mysqlのポート番号を記述
       WORDPRESS_DB_HOST: wp_yes_db_1:3306
       # DB_NAMEはデフォルトでwordpressなので書き換える
       WORDPRESS_DB_NAME: wordpressがアクセスするデータベース => ②で記述したデータベース名(my_db)
       WORDPRESS_DB_USER: wordpressがアクセスする時のユーザ名 => ③で記述したユーザ名(user)
       WORDPRESS_DB_PASSWORD: wordpressがアクセスする時のパスワード => ④で記述したパスワード(pass)
     volumes:
        # ホストOSの作業ディレクトリ:dockerコンテナの作業ディレクトリ
        - ./:/var/www/html/
       
volumes:
    db_data:
        driver: local

基本の書き方は以下3つにあり.

1. Quickstart: Compose and WordPress | Docker Documentation

2. https://hub.docker.com/_/mysql/

3. https://hub.docker.com/_/wordpress/

このdocker-compose.ymlがあるフォルダでdocker-compose up -dコマンド実行. 

因みにdbの中身ごと破棄するにはdocker-compose down --volumes

するとDockerコンテナ上にWordPressMySQLがインストールされ, 起動完了.

起動するとコンテナとマウントしたホスト側のディレクトリ(./)に新規インストールされたWordPressの各種データが保存される.

※ 後に登場するwp-config.phpWORDPRESS_DB_NAMEで結構つまずきました(~_~;)

phpmyadminからデータベースのデータ取得

友達はロリポップを使用していたので, ロリポップの管理画面にログインしてphpmyadminに入りました. この辺りは以下を参考に. そして**.sqlをダウンロード.

WordPress手動バックアップとDocker環境でのリストア

FileZillaでサーバー上のデータをダウンロード

以下を参考にダウンロード.

【FileZillaの使い方】WordPressでFTPソフトを使おう

 

ダウンロードしたmysqlデータの書き換え

WordPressは画面遷移(ルーティング)の情報をmysql側で保持しているらしいです. なのでダウンロードしたファイルではhttp://www.123456/Aboutみたいな記述になっています. これをローカルホストで動かすにはhttp://localhost:8000/Aboutで置換します. (今回はports: - "8000:80"でホスト側のポートを8000にしたのでこう書く.)

テキストエディタとかで検索->全て置換すれば一瞬です.

書き換えたデータはmysqlのコンテナとマウントしたフォルダ(./db_data/)以下に設置します.

 

ダウンロードしたWordPressデータで置き換え

FileZillaで落としたデータを全て先ほどインストールされたWordPressデータと入れ替えます.

 

wp-config.phpの書き換え

仕上げです. wp-config.phpのデータベースの記述部分を以下のように書き換えます.

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '②で記述したデータベース名(my_db)');

/** MySQL データベースのユーザー名 */
define('DB_USER', '③で記述したユーザ名(user)');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '④で記述したパスワード(pass)');

/** MySQL のホスト名 */
define('DB_HOST', 'WORDPRESS_DB_HOSTの中身(wp_yes_db_1:3306)');

docker-compose.ymlのWORDPRESS_DB_NAMEはデフォルトでwordpressになるので, ymlのこれとconfigのDB_NAMEは一致させるように.

 

ログイン

ブラウザでlocalhost:8000/admin/と打てばログイン画面になるはずです. いつも通りのIDとパスワードで入れます. お疲れ様でした.

 

まとめ

とりあえずローカルで本番環境を再現することが目的だったので, 細かな設定とかは考えていません. 次はサイトのphpとかjsとかいじったことを備忘録として残します!!(Qiitaのようにはならないぞ💪)