最近ローカルの開発環境を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の最初の設定画面。これが表示されれば成功しているということ)。
ちなみにphpmyadminにアクセスするには localhost:8080 をブラウザで開く(僕はほぼ使わないけど)。
5.ソースコードの確認
~/development/sample/public/
というフォルダが生成されていて、その配下にWordpressがまるまる入っている。
既にマウント済みなので、いつでも開発が開始できる。
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を立ち上げて本番サーバーと同期をする方法についてはまた今度。