WordPressをdockerのコンテナで稼働する手順を記載します。
稼働するWordPressは家族・友人での情報共有に使うブログであり、一般には公開しないため以下とします。
- Webのポート番号は80でなく1224とする。
- Webの全ページにてBasic認証をかける。ただし、アカウントは1つで共有して利用する。
コンテナで稼働する主な製品は以下です。
- OS:CentOS 6.6
- Webサーバ:Apache
- DBサーバ:MySQL
コンテナを稼働させるホストOSにはCentOS 6.5を使います。
dockerをインストール
sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo yum -y install docker-io
dockerを開始
sudo service docker start
sudo chkconfig docker on
Dockerfileファイルを作成
Dockerfileというファイルを作成し、以下の内容を記載し保存します。ただし、「USER1 PASS1」はBasic認証時のユーザ名とパスワードですので、他に変えた方が良いです。
FROM centos:centos6
RUN /bin/cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
RUN yum -y install httpd php php-mysql mysql-server tar wget php-gd
WORKDIR /tmp/
RUN wget https://ja.wordpress.org/latest-ja.tar.gz
RUN tar xvfz ./latest-ja.tar.gz
RUN rm -f ./latest-ja.tar.gz
RUN mv wordpress/* /var/www/html/
RUN cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
RUN sed -i -e 's/database_name_here/wordpress/g' -e 's/username_here/wordpress/g' -e 's/password_here/wppass/g' /var/www/html/wp-config.php
RUN sed -i -e 's/AllowOverride\ None/AllowOverride\ AuthConfig/g' /etc/httpd/conf/httpd.conf
RUN echo -e "AuthUserFile /.htpasswd\nAuthName Himitsu\nAuthType Basic\nrequire valid-user" > /var/www/html/.htaccess
RUN htpasswd -cb /.htpasswd USER1 PASS1
RUN chown -R apache.apache /var/www/html/
RUN service mysqld start && mysql -u root -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'wppass'; FLUSH PRIVILEGES;" && service mysqld stop
RUN echo -e "service mysqld start\nservice httpd start\n/bin/bash" > /startService.sh
RUN chmod o+x /startService.sh
EXPOSE 80
CMD /startService.sh
コンテナイメージを作成
Dockerfileファイルがあるディレクトリで以下を実行します。
sudo docker build --rm -t mywordpress .
コンテナを稼働
sudo docker run -i -t -d -p 1224:80 -v /share/WordPress1:/share/WordPress1 --name WordPress1 mywordpress
WordPressをセットアップ
ブラウザで以下にアクセスします。するとBasic認証のダイアログが表示されるので、ユーザ名とパスワード(デフォルトだとUSER1,PASS1)を入力してください。次に、指示に従いWordPressをセットアップします。
http://<ホストOSのIPアドレス>:1224/wp-admin/install.php
これでWordPressを利用できるようになりました。
メンテナンス作業
コンソールで作業
sudo docker exec -i -t WordPress1 bash
このexecサブコマンドがサポートされたのはdockerバージョン1.3です。
ファイルをやり取り
コンテナとホストOS間でファイルをやり取りするには/share/WordPress1/
が使えます。コンテナとホストOSで同じディレクトリが見えます。