個人用の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を止める必要もないので、個人が使う分にはちょうどいいです。
まとめ
サービスでは、使えないが個人が使う分にはこんな感じかなと思いました。