DockerでWordPress環境を作ろう。ついでにWordmoveも付けてしまおう。

Docker

最近ローカルの開発環境をVagrantからDockerに切り替えた。あるPJTで必要になったからなんだけど、もっと早くやっておくべきだった。

「環境構築の再現性を持たせる」ことがこんなに作業効率を高めてくれるなんて、今更ながらとても感動したので、自分なりに一番安定したDocker + WordPressの開発環境セットアップメモを残しておく。

前提

  • Macです。
  • DockerはInstallしておく。

手順

1.開発用ディレクトリを作る。

ここでは仮に、

~/development/sample/

としておく。

2.docker-compose.ymlの準備

今回は下記の4つを使ってWordpressサイトを構築する。

  • mysql:5.6

  • 最新wordpress

  • phpmyadmin

  • wordmove (本番サーバーとローカル開発環境の同期用)

そのため、docker-compose.ymlという名前のファイルを作り、~/development/sample/直下に格納し、下記を記述。

version: '3'
services:
    database:
        image: mysql:5.6
        command:
            - "--character-set-server=utf8"
            - "--collation-server=utf8_unicode_ci"
        ports:
            - "3307:3306" #適宜変更してください
        restart: on-failure:5
        environment:
            MYSQL_USER: wordpress
            MYSQL_DATABASE: wordpress
            MYSQL_PASSWORD: wordpress
            MYSQL_ROOT_PASSWORD: wordpress
    wordpress:
        depends_on:
            - database
        build:
          context: ./docker/
        ports:
            - "8000:80" #適宜変更してください
        restart: on-failure:5
        volumes:
            - ./public:/var/www/html
        environment:
            WORDPRESS_DB_HOST: database:3306
            WORDPRESS_DB_PASSWORD: wordpress
    phpmyadmin:
        depends_on:
            - database
        image: phpmyadmin/phpmyadmin
        ports:
            - 8080:80 # #適宜変更してください
        restart: on-failure:5
        environment:
            PMA_HOST: database
    wordmove:
        tty: true
        depends_on:
            - wordpress
        image: mfuezesi/wordmove
        restart: on-failure:5
        container_name: my_wordmove
        volumes:
            - ./config:/home
            - ./public:/var/www/html
            - ~/.ssh:/root/.ssh      # (!)

3.Dockerfileを作成してpdo_mysqlをインストールするようにする

~/development/sample/docker/というディレクトリを作り、そこでDockerfileというファイルを作成し、下記を記述する。

FROM wordpress:latest
RUN apt-get update
RUN apt-get install -y vim
RUN docker-php-ext-install pdo_mysql

3.いよいよDockerコンテナの立ち上げ

Macのターミナルで、下記を実行

$ cd ~/development/sample
$ docker-compose up -d --build
Starting sample_database_1 ... done
Starting sample_phpmyadmin_1 ... done
Starting sample_wordpress_1  ... done
Starting my_wordmove     ... done

ターミナルの結果に緑色で4つの「done」が表示されれば成功!

4.Wordpressサイトが立ち上がっているか確認してみる

ブラウザでlocalhost:8000 にアクセスして、Wordpressの設定画面が立ち上がることを確認。

wordpress screenshot

無事立ち上がっている(上記はWordpressの最初の設定画面。これが表示されれば成功しているということ)。

ちなみにphpmyadminにアクセスするには localhost:8080 をブラウザで開く(僕はほぼ使わないけど)。

5.ソースコードの確認

~/development/sample/public/というフォルダが生成されていて、その配下にWordpressがまるまる入っている。

screenshot finder

既にマウント済みなので、いつでも開発が開始できる。

6.Dockerコンテナを止める

開発がひと段落したら、Dockerコンテナを止める。

$ docker-compose stop

コンテナごと消してしまいたい時は下記。

$ docker-compose down

docker-compose.ymlだけで作らない理由

普通に最新のWordpressをダウンロードするだけだと、PULLする元のWordpressサイトによっては、下記のようなPDO絡みのエラーが出る。

PDOException thrown
could not find driver

pdo_mysqlというドライバを入れなさいということなので、上記に紹介した方法ではDockerfileで明示的にダウンロードするようにしている。


わずかファイル2つとコマンドライン2行でWordpressが立ち上がるなんて、すごいことだ。

Wordmoveを立ち上げて本番サーバーと同期をする方法についてはまた今度。

Written by Ryo Konishi