LoginSignup
13
15

More than 5 years have passed since last update.

日本語版WordPressのテーマ開発環境をサクっと立ち上げるdocker-compose.yml

Last updated at Posted at 2016-06-17

誰でも簡単にDockerを使ってWordPress開発できる環境を考えてみました。Dockerの知識は必要最低限で済むはず。

メリット

  • gitでデータベースを含む全ての状態を管理できる
  • 環境に依存せず、本番環境にも展開しやすい

デメリット

  • SQLダンプはマージできないので、DBに関係する作業は並行開発できない

想定環境

  • MacOSX + docker-toolboxを想定
  • 事前にdocker-toolboxをインストールしておく

サンプルコード

  • 以下の4つのファイルをprojectフォルダ内に作成する
  • !pass!にはパスワードが入る
  • WordPress4.5.2 + Apacheの構成
  • WORDPRESS_DEBUG環境変数でデバッグモードを有効化している

docker-compose.yml

project/docker-compose.yml
mysql:
  build: mysql
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: !pass!
wp:
  image: bakudankun/wordpress-ja:4.5.2-apache
  links:
    - mysql:mysql
  ports:
    - "80:80"
  volumes:
    - "${PWD}/wp-content/:/var/www/html/wp-content"
  environment:
    # wp-configのデバッグ機能を有効化
    - WORDPRESS_DEBUG: "true"
phpmyadmin:
  image: phpmyadmin/phpmyadmin:4.6.2-3
  links:
    - mysql:db
  ports:
    - "8888:80"
  environment:
    PMA_USER: root
    PMA_PASSWORD: !pass!

MySQLのDockerfile

公式のmysqlイメージへ、初期化時のデータベースとしてdb_dump.sqlをつっこんでいる。db_dump.sqlはデータベースの保存をする度に上書かれる。

project/mysql/Dockerfile
# デプロイ先に合わせて決めておく。仮にさくらのレンタルサーバだと2016年6月現在5.5系となる
FROM mysql:5.5
# SQLダンプを初期化時に読み込む
ADD db_dump.sql /docker-entrypoint-initdb.d
project/mysql/db_dump.sql
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;

get-dump.sh

動作中のmysqlコンテナからSQLダンプを作成し、mysql/db_dump.sqlを上書きします。

project/get-dump.sh
docker exec ${PWD##*/}_mysql_1 sh -c 'exec mysqldump --databases wordpress -uroot -p"$MYSQL_ROOT_PASSWORD"' > mysql/db_dump.sql

使い方

まずはdocker-machineでVMを立ち上げ、Dockerクライアントから接続できるようにしておく。

docker-machine start default
# ターミナル再起動

# docker psでエラーが出ないことを確認する
docker ps

適当なフォルダ内(ここではprojectとする)にdocker-compose.ymlmysql/Dockerfilemysql/db_dump.sqlを作成し、docker-compose.ymlの階層で次を実行する。

# buildを付けないとダンプを更新しても反映されない
docker-compose up -d --build

VirtualBoxでVMの設定を開き、アダプター1のポートマッピングを適当に設定する。以下は一例:

portmapping.png

上の例では、各アプリケーションには次のアドレスでアクセスできる。

アプリケーション アドレス
WordPress http://localhost:10080
phpMyAdmin http://localhost:18888

コンテナを終了したくなったら次を実行する。この操作をするとデータベースの内容は初期化される。データベースを保存する方法は、後述の「データベースの保存」を参照。

docker-compose stop && docker-compose rm -f

データベースの保存

コマンドラインでやる

mysqlコンテナ動作中に、サンプルコードのget-dump.shを実行する。

phpMyAdminからGUIでやる

phpmyadminへアクセスし、データベースを選択しない状態でSQLダンプをダウンロードする。

スクリーンショット_2016-06-17_15_35_21.png

ダウンロードしたSQLファイルをdb_dump.sqlに改名してmysql/db_dump.sqlに上書く。

テーマの開発

wp-contentディレクトリ以下にファイルができるので、それを編集すると即座に反映される。普通にgitコミットして管理できる。

デフォルトのテーマを消したくなるが、イメージの仕様上再起動すると復活してしまうため、無視する。(.gitignore推奨)

本番への展開

  • WordMoveを使ってURL部分を置き換え、db_dump.sqlを本番のMySQLにインポートする
  • wp-content以下を本番のWordPress環境に上書く
13
15
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
13
15