SourceTreeからGitHubにssh接続できなかった

WordPressの環境環境を作る方法はいくつかありますが、一番簡単で手軽なのは、DockerCompose を使った方法です。設定ファイル書いて、コマンドひとつ実行するだけなのでおそらく一番簡単なやり方です。拍子抜けするほど簡単でしたのでメモがわりにご紹介します。

Docker Compose とは?

お手軽な仮想環境 Docker を、複数コンテナの管理などの機能を加えさらに使いやすくしたものが Docker Compose です。

Docker compose とは、複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能です。

Docker compose ことはじめハンズオン - Qiita

さっそくWordPressを起動してみる

昔々、WordPressのローカル環境を作るには、

  • PHPのインストール
  • WEBサーバのインストール
  • MySQLのインストール
  • Wordpress本体の設置

をそれぞれ個別に準備していました。これが中々大変で、環境の準備だけでも半日使うのも珍しくありませんでした。

しかし、 DockerCompose を使えば、

  • WordPressイメージ ( PHP , WEBサーバ , 本体)
  • MySQLイメージ

のコンテナを2つ起動するだけで、あっというまにローカル環境の出来上がりです。

DockerComposeymlファイル でコンテナの構成を定義します。

docker-compose.yml
version: '3'
services:
  wordpress:
    image: wordpress
    container_name: some-wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: my-secret-pw
  mysql:
    image: mysql:5.7
    container_name: some-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw

docker-compose.ymlがある場所で下記を実行します。

$ docker-compose up -d

Starting some-wordpress ... done
Starting some-mysql     ... done

これだけで、WordPressローカル環境の出来上がりです。
素晴らしく手軽です。

ブラウザから http://localhost:8080 にアクセスするとWordPressのインストール画面が表示されます。

停止と削除

それぞれ、

停止
$ docker-compose stop

Stopping some-wordpress ... done
Stopping some-mysql     ... done
削除
$ docker-compose down

Removing some-wordpress ... done
Removing some-mysql     ... done
Removing network test-wordpress_default

削除してしまうとすべてデータが消えてしまいます。元に戻せませんのでご注意を。

開発用テーマのマウント

テーマの自作やカスタマイズをする際、ファイルがコンテナの中にあるので編集が少し面倒です。

そこで、ホスト側のフォルダをコンテナ内にマウントします。

WordPressコンテナの volumes の項目を追加し、

docker-compose.yml
services:
  wordpress:
    image: wordpress
    container_name: some-wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_PASSWORD: my-secret-pw
    volumes:
      - /Users/xxx/wordpress/themes/my-theme:/var/www/html/wp-content/themes/my-theme

のように修正し、DockerComposeを起動し直してください。

/Users/xxx/wordpress/themes/my-theme
の部分はお使いの環境に合わせて変更してください。

マウントしたフォルダに必要なファイルが揃っていれば、
WordPress管理画面のテーマ選択画面に表示されるはずです。

アップロードサイズ上限の変更

WordPress公式イメージではPHPのファイルアップロードサイズの上限が2MBなので変更します。

独自の設定ファイルをマウントし、コンテナに読み込ませましょう。

uploads.ini
post_max_size = 20M;
upload_max_filesize = 20M;

/usr/local/etc/php/conf.d にマウントします。
このフォルダに置かれたiniファイルはコンテナの起動時に自動で読み込まれます。

docker-compose.yml (追記分のみ)
    volumes:
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

これでコンテナを起動しなおせば、ファイルアップロードサイズの上限が変更されます。

wp-contentフォルダの権限の変更

All-in-One WP Migration などのプラグインは
wp-content フォルダのアクセス権限が 0777 でないと使用出来ません。

コマンドラインからコンテナに入り chmod コマンドで直接変更してしまいましょう。

WordPressは some-wordpress という名前のコンテナで動作しています。

$ docker exec -it some-wordpress bash

//コンテナ内で実行
$ chmod -R 0777 wp-content

これでwp-contentフォルダの権限が変更されました。

最終的な docker-compose.yml

docker-compose.yml
version: '3'
services:
  wordpress:
    image: wordpress
    container_name: some-wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_PASSWORD: my-secret-pw
    volumes:
      - /Users/xxx/wordpress/themes/my-theme:/var/www/html/wp-content/themes/my-theme
      - /etc/group:/etc/group:ro
      - /etc/passwd:/etc/passwd:ro
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
  mysql:
    image: mysql:5.7
    container_name: some-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: my-secret-pw

まとめると

  • docker-compose.yml
  • uploads.ini

これだけ用意して、コマンド一発でWordPress環境の出来上がりです。

使ってみた感想

あまりに簡単で手軽で驚いてしまいました。

使いたい時にサッと準備して、不要になったらサッと削除でき非常にストレスフリーです。
バージョンアップへの対応も非常に楽チン。

WordPressのテーマ作りやプラグインの開発をしている人には是非オススメしたいです。