joppot

コピペで絶対動く。説明を妥協しない

PC

docker for macでnginx + php-fpm + php7 + ホストmysqlでwordpressの環境を構築する

投稿日:2017年5月12日 更新日:

Pocket

概要

みなさんこんにちはcandleです。
今回はdockerを使ってwordpressの環境を作りたいと思います。
ただ、一言でmac + docker + wordpressと言っても様々な構造があります。

今回紹介するのはこのような構造になります。

方針としてはMacのwordpressプロジェクトをphp-fpmとnginx containerにマウントしてwordpressを使えるようにします。

dockerの基本的な構成は以下のサイトを参考にさせてもらいました。

http://takaya030.hatenablog.com/entry/20160504/1462330190


前提

dockerに詳しい方は別にdocker for macじゃなくても問題ないと思います。
mysqlはmacにインストールしてありますが、それもわかる人は適宜調整してください。

SPONSORED LINK


wordpressプロジェクトの作成

公式サイトからwordpressをダウンロードします。

https://ja.wordpress.org

zipを解凍して、フォルダの名前をbob_blogにします。
私はデスクトップ上で作業します。執筆時のwordpressの最新バージョンは4.7.4です。

cd ~/Desktop
ls
unzip wordpress-4.7.4-ja.zip
rm -f wordpress-4.7.4-ja.zip
ls
mv wordpress bob_blog
cd bob_blog

wordpressプロジェクトが完成しました。

nginxのcontainerの作成

nginxのためのDockerファイルとnginxの設定ファイルを作成します。

mkdir nginx
touch nginx/Dockerfile nginx/server.conf

nginxのDockerfileを開きます。

emacs nginx/Dockerfile

以下を追加します。

FROM nginx:latest
MAINTAINER candle

ADD server.conf /etc/nginx/conf.d/server.conf

nginxの設定ファイルをnginx containerに加えるだけの記述です。
nginx/server.confを開きます。

emacs nginx/server.conf

以下を記述します。

server {
  listen 80 default;
  server_name _;

  root /var/www/html;
  index index.php index.html index.htm;
  charset utf-8;

  access_log off;
  error_log off;

  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
     fastcgi_pass bobblog_php-fpm_1:9000;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include       fastcgi_params;
  }

}


php-fpm containerの作成

php-fpmの為のファイルを作成します。
こちらはDockerfileのみ用意します。

mkdir php-fpm
touch php-fpm/Dockerfile

php-fpm/Dockerfileを開いて、以下を記述します。

FROM php:7-fpm
MAINTAINER candle

RUN /usr/local/bin/docker-php-ext-install mysqli

最後のRUN文はphp-fpmでmysqlを扱う為のパッケージをインストールしています。

docker-composeのファイル作成

dockerのビルドや実行をまとめてくれるdocker-composeの為のファイルを作成します。

touch docker-compose.yml

エディタで開いて

emacs docker-fompose.yml

以下を書き込みましょう。

nginx:
  build: ./nginx
  ports:
    - "80:80"
  links:
    - php-fpm
 volumes:
    - ./:/var/www/html

php-fpm:
  build: ./php-fpm
  volumes:
    - ./:/var/www/html

nginxとphp-fpmはMacのbob_blogディレクトリを/var/www/htmlにマウントしています。

ファイルの記述は以上です。
bob_blogフォルダに追加したものはこんな感じです。

bob_blog/
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ └── server.conf
└── php-fpm
└── Dockerfile



mysqlの接続設定

それではmysqlの設定をしましょう。
php-fpm containerは今回の構成ではmacに搭載されているmysqlにアクセスするようにします。

wordpressのmysql設定はwp-config.phpに記述します。
この時アドレスを一般的には「localhost」か「127.0.0.1」にします。

しかし、docker containerからホストのローカルIPアドレスにアクセスする時、127.0.0.1とlocalhostは使えません。

対策として、独自のローカルIPアドレスをMacに割り振ります。
詳しいことは前回の記事を参照してください。

以下のコマンドでlo0 IPアドレスを割り振ります。

sudo ifconfig lo0 alias 10.200.10.1/24

できたらifconfigコマンドで確認します。

ifconfig

このlo0のIPアドレスはMac PCを再起動すると解除されます。
もしも、自動的に割り振りたい場合は以下の記事を参照してください。

wp-config-sample.phpをコピーして、wp-config.phpを作成します。

cp wp-config-sample.php wp-config.php

wp-config.phpを開いて、以下の箇所を変更します。

define('DB_NAME', 'bob_blog');

define('DB_USER', 'root');

define('DB_PASSWORD', '');

define('DB_HOST', '10.200.10.1');

ついでにsaltの値も変更しておいてください。
Hostの値が先ほど設定したlo0のIPアドレスになっています。

保存しましょう。

最後に、bob_blogのデータベースを先に作成します。

macのmysqlにログインします。

mysql -u root -p

ログインしたら以下のコマンドでデータベースを作ります。

create database bob_blog default charset utf8;

これで良いでしょう。
以下のようなアクセスが可能になります。

準備ができました。


dockerを起動する

さて、dockerを起動してみましょう。

bob_blogの中で以下を実行します。

docker-compose up -d

終わったら、ブラウザでいかにアクセスします。

http://127.0.0.1/wp-admin/install.php

以下のような画面がでれば、成功です。

解説します。

macのブラウザで、http://127.0.0.1にアクセスするとnginx containerにアクセスします。

nginxはphpファイルをphp-fpm containerにプロキシします。
php-fpm containerは/var/www/htmlにmacからマウントしたphpファイルを実行し、必要とあらば、mysqlにアクセスします。

もしも、nginxに要求されたファイルが画像やjsの場合はnginxの/var/www/htmlにマウントしたbob_blogのファイルを持ってきて返します。

注意点

このdockerの構成ではセキュリティを考えていません。
例えば、urlでhttp://127.0.0.1/docker-compose.ymlにアクセスするとそのファイルがダウンロードできてしまいます。
なので、本番環境でやる場合には対策する必要があります。
それらの記事はまた別の記事で解説します。

おまけ

ためしに、wordpressのサイトを動かしてみましょう。
インストール画面で
「サイトのタイトル」bob_blog
「ユーザー名」bob
「パスワード」好きなパスワード(ローカルだからなんでもよい)
「メールアドレス」bob@example.com

で作ってみます。
「wordpressをインストール」ボタンを押します。するとリダイレクトします。なぜか僕の場合、ここは表示がうまくいかないです。
ホームに戻ると、正しく表示します。

うまくいきました。

docker-compose down -v

これで全て止まります。

まとめ

こちらの構成はよりMacで使いやすいものです。
wordpressの開発では一番便利かもしれません。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-PC
-, , , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

docker for macでbusyboxを使ったwordpressの環境を構築する

概要 記事を書いたあと気付いたのですが、busyboxにファイルはアップロードできるのですが、プラグインがインストールできませんでした。 ただいま、研究中なので、解明次第、記事を更新したいと思います。 …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

twitter

スポンサードリンク

アーカイブ