Help us understand the problem. What is going on with this article?

Docker Compose を使ってWordPress のテーマ開発環境をつくった

More than 1 year has passed since last update.

一体何番煎じの記事になるのか分からないが、Docker Compose を使用したwordpress のテーマ開発環境をつくってみた。

この記事を読む対象の人

  • Docker を使って間もない人
  • WordPress のテーマ開発をDockerを使ってやりたい人
  • Linux 環境でDocker Compose を使おうとしている人

環境

  • Lubuntu 16.04 にDocker が既にインストールされている環境

Docker のインストール方法についてはこちら↓
https://qiita.com/shimisunet/items/b20d1cb45074486c026d

Docker Compose とは

複数のDocker コンテナからなるサービスを構築・実行する手順をひとまとめに定義して自動化するという機能である。Docker Compose を使うことで、Docker を使用した環境構築が容易になる。
引用先↓
https://tech.recruit-mp.co.jp/infrastructure/post-11266/

新規でWordPress, MySQL の環境を構築する

既にDocker がインストールされていることを前提に書く。

ターミナルを起動させて、初めに、docker-compose をインストールする。

sudo apt-get install docker-compose

任意の場所にディレクトリを作成する。

mkdir wordpress(任意のディレクトリ名)

docker-compose.yml の作成

作成したディレクトリ内に移動し、docker-compose.yml のファイルを作成する。任意のエディタで下記を追加。

version: '2'

services:
   db:
     image: mysql:latest
     volumes:
       - db_data:/var/lib/mysql
     environment:
       MYSQL_DATABASE: wordpress(任意のDB名)
       MYSQL_USER: wp_user(任意のユーザ名)
       MYSQL_PASSWORD: password(任意のパスワード)
       MYSQL_RANDOM_ROOT_PASSWORD: "yes"
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8080:80"
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wp_user(上記で書いたDBのユーザ名)
       WORDPRESS_DB_PASSWORD: password(上記で書いたDBのパスワード)
volumes:
    db_data:

上の記述で設定していることは以下のとおり。

  • MySQL、WordPress のバージョンのイメージ設定(latestで最新のバージョンをを取得するようにしている)。
  • WordPress で使用するデータベース名、ユーザ名、パスワードの設定。
  • WordPress で作成したサイトをブラウザで閲覧する際のポート番号(今回は8080を割り当てている)。
  • WordPress で使用するデータベース名やパスワード。

WordPress のテーマを開発するディレクトリをDocker のコンテナとマウントさせる

WordPress のテーマの開発をDocker のコンテナ内でコーディングするのは現実的に難しい。そこで、コーディングをしやすく、且つ管理しやすくするため、テーマ開発用のディレクトリをローカル環境に用意する。この用意したテーマ開発用のディレクトリを、ここではVolumeと呼ぶ。ローカル環境に用意したVolume をDocker のコンテナとマウントさせる。

Volume をDocker のコンテナをマウントさせるための設定は、WordPress の設定部分の記述に、volumes:以降を追加する。(2018年10月21日更新)

(上記省略)
wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8080:80"
     volumes:
       - ./themes/hoge:/var/www/html/wp-content/themes/hoge
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wp_user(上記で書いたDBのユーザ名)
       WORDPRESS_DB_PASSWORD: password(上記で書いたDBのパスワード)

この設定で、ローカル環境の/themes/hoge というテーマ開発用ディレクトリをDocker のコンテナ内の/var/www/html/wp-content/themes/hogeにマウントさせている。
実際のテーマ開発は、ローカル環境の(任意のディレクトリ)/themes/hoge内で行う。
予め、ローカル環境に/themes/hogeは作成しておくこと。(2018年4月29日追記)

その後、下記のコマンドでDocker を立ち上げる。
オプション-dをつけることで、コンテナをバックグラウンドで動かすことができる。

docker-compose up -d

ブラウザで、http://localhost:8080 を開く。
下記のようなWordPress のインストール画面が表示されたら成功。
Screen Shot 2018-03-26 at 01.17.31.png

補足

docker-compose.yml でmysql のimage を指定する部分で、image:latest にすると、現在、MySQLの5.7を取得してきます。
しかし、MySQL5.7 を使用するとコケてしまい、DB やWordPress に接続できないことがことがわかりました。
この記事を読んでDocker Compose でWordPress のテーマを開発したい方は、MySQL のイメージを取得する際、バージョンを5.6 に指定して環境を構築してください。(2018年7月31日追記)

version: '2'

services:
   db:
     image: mysql:5.6

参考URL

https://tech.recruit-mp.co.jp/infrastructure/post-11266/

ありがとうございました。
https://qiita.com/muk-ai/items/3350122d9e09473723c6

shimisunet
夢を見る一般市民
https://shimisu.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした