個人用のwordpressをdockerで動かす

自分がいじっているwordpressをDockerで動かすようになりました。

前提条件

wordpressの運用の良い方法は、あまり知らないので参考しないで欲しいです。 仕事では、このような状況ではないはずなので。。。 とりあえず、wordpressをまるっとリポジトリ管理することで楽できるのでやってます。

事前準備

wordpressのコードを、ダウンロードして git init して リポジトリ管理にする

wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
cp /srv/wordpress/wp-config-sample.php /srv/wordpress/wp-config.php
 cd /srv/wordpress/ && git init .....

wp-config.phpにDBの設定を記入

Dockerfile

FROM ubuntu:14.04
MAINTAINER oomatomo ooma0301@gmail.com

RUN apt-get update -y
# wordpressを動かすために必要なphp5系
RUN apt-get install -y php5-fpm php5-mysql

# php5-fpmの初期の設定ファイルを削除する
RUN rm /etc/php5/fpm/pool.d/www.conf
# php5-fpmの
COPY wordpress.conf /etc/php5/fpm/pool.d/wordpress.conf
COPY start.sh ~/
CMD ["~/start.sh"]

/etc/php5/fpm/pool.d/wordpress.conf

/var/run/にphp5-fpm_wordpress.sockというソケットファイルを作るように設定します。

[wordpress]

user = www-data
group = www-data
# ソケットファイルの設置
listen = /var/run/php5-fpm_wordpress.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

chdir = /

start.sh

www-dataでphp5-fpmを動かしているので、ファイルの権限を変更しています。 また、dockerで動かすのでphp5-fpmのデーモン化はしないような設定にしています。

#! /bin/bash
chown -R www-data:www-data /srv
/usr/sbin/php5-fpm --nodaemonize -c /etc/php5/fpm/php-fpm.conf

docker-compose.yml

/var/run/には、ホストから見るソケットファイルがあるのでvolumesに入れてます。 /srv/には、リポジトリ管理しているwordpressのファイルがあるのでこれも、volumesに入れてます。

wordpress:
  build: ./wordpress
  volumes:
    - /var/run:/var/run
    - /srv:/srv

/etc/nginx/conf.d/wordpress.conf

ホストのnginxの設定ファイル

fastcgi_pass unix:/var/run/php5-fpm_wordpres.sock; root /srv/wordpress/ ; 以外は、デフォルトのやつですね。

server {
  listen       80;
  # ドメインを設定
  server_name  hoge.net;
  # wordpressのパス
  root /srv/wordpress/ ;
  client_max_body_size 64M;
  # Deny access to any files with a .php extension in the uploads directory
  location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
  }
  location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
  }
  location ~* \.(gif|jpg|jpeg|png|css|js)$ {
    expires max;
  }
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    #  /etc/php5/fpm/pool.d/wordpress.conf で記述した ソケットファイル
    fastcgi_pass  unix:/var/run/php5-fpm_wordpres.sock;
    fastcgi_param   SCRIPT_FILENAME
                    $document_root$fastcgi_script_name;
    include       fastcgi_params;
  }
}

deploy

docker-compose up -d wordpress で完了するので楽です リポジトリ管理は、ホスト側で行っているのでdockerを止める必要もないので、個人が使う分にはちょうどいいです。

まとめ

サービスでは、使えないが個人が使う分にはこんな感じかなと思いました。