サーバー建てたら2分でWordPress

前回のsupervisorを試した結果も踏まえて、Dockerfileを作成しました。作成したものをbuildしてできたイメージをし、コンテナを作るところをやります。

参考サイト
memorycraft
Dockerってなんじゃ?(docker+nginxで複数コンテナにWEBサーバーをたてる)

qiita  yujiod
各種ミドルウェアをSupervisorで管理する

Dockerの用意に2分以上かかるだろ~って突っ込みは、玄関を開けてから冷蔵庫を開けて準備するまでに2分以上たってるだろ~という突っ込みと同じなのでスルーです。

では先に簡単に流れを書きます。
まずはファイルを用意します。
環境ですが、OSはcoreosでdockerは1.0.1です。

 $ ls -l docker/conf/

-rw-r--r-- 1 core core 1607 Jul 21 10:08 Dockerfile
-rw-r--r-- 1 core core  441 Jul 21 10:08 set.conf
-rw-r--r-- 1 core core 1226 Jul 21 10:08 wp-config.php

ビルドします。

 $ docker build --no-cache --rm -t takeken/wp_data Docker/conf
$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
takeken/wp_data         latest              feebd5fa6ec7        37 seconds ago      469.4 MB

出来上がったイメージからコンテナを動かします。

$ docker run -p 80 -p 22 -p 9001 --name wp_000 -d takeken/wp_data /usr/bin/supervisord
c4cd6700804fd1c1b2980c265091c4b2ddcd9b407ba8af6bca00eb7c5f1937e6
 $ docker ps
CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS              PORTS                                                                   NAMES
c4cd6700804f        takeken/wp_data:latest   /usr/bin/supervisord   3 seconds ago       Up 2 seconds        0.0.0.0:49185->22/tcp, 0.0.0.0:49186->80/tcp, 0.0.0.0:49187->9001/tcp   wp_000

さて、慣れた人ならこのまんまでは実用できないのが分かると思いますが、今後、バーチャルホストのようにドメインもしくはサブドメインを割り当てて、個別にアクセスできるような試みをするつもりなので、今はこれでOKです。

アクセスしてみるとDBにつながっていて、Wordpressのインストールに直行です。

dwp01

Supervisorにもアクセス可能です。

dwp02

dwp03

サーバー建てたら2分でWordpressは成功です。よね?

それぞれのデータですが、まだたけけんのGitは用意できていないので、ブログ内で公開します。

注意としてはこのまま使うと、ユーザー名・パスワードともにtakekenなので、絶対このままでは使わないようにしてください
おすすめとしては、このままだとセキュリティが甘いx300は過ぎるので、テスト環境で使って、どの記述をどう変えればどうなるのかを検証しながら変えていくのがよろしいかと思います。

Dockerfile

 $ cat docker/conf/Dockerfile
FROM centos:centos6

MAINTAINER takeken

RUN yum install sudo tar passwd openssh openssh-clients openssh-server httpd vim python-setuptools php php-devel php-mysql php-mbstring php-gd mysql-server -y

# ssh
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN useradd takeken
RUN echo 'takeken:takeken' | chpasswd
RUN echo 'takeken ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/takeken

# wordpress
RUN curl http://ja.wordpress.org/wordpress-3.8.1-ja.tar.gz | tar -xz -C /var/www
RUN mv /var/www/html /var/www/html.org
RUN mv /var/www/wordpress /var/www/html
ADD wp-config.php /var/www/html/wp-config.php

# supervisor
RUN easy_install supervisor
RUN echo_supervisord_conf > /etc/supervisord.conf
RUN echo '[include]' >> /etc/supervisord.conf
RUN echo 'files = supervisord.d/*.conf' >> /etc/supervisord.conf
RUN echo '[inet_http_server]' >> /etc/supervisord.conf
RUN echo 'port=0.0.0.0:9001' >> /etc/supervisord.conf
RUN echo 'username=takeken' >> /etc/supervisord.conf
RUN echo 'password=takeken' >> /etc/supervisord.conf

RUN mkdir -p /etc/supervisord.d
ADD set.conf /etc/supervisord.d/set.conf

#mysql
RUN service mysqld restart && \
        /usr/bin/mysqladmin -u root password takeken
RUN service mysqld restart && \
        mysql -uroot -ptakeken -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'wordpress'; FLUSH PRIVILEGES;"

EXPOSE 22 80 9001

CMD ["/usr/bin/supervisord"]

set.conf

 $ cat docker/conf/set.conf
[supervisord]
nodaemon=true

[program:sshd]
command=/usr/sbin/sshd -D
autostart=true
autorestart=true

[program:httpd]
command=/usr/sbin/httpd -D FOREGROUND
autostart=true
autorestart=true

[program:mysqld]
command=/usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
autostart=true
autorestart=true

wp-config.php これは別々がいいと思うけど・・・

 $ cat docker/conf/wp-config.php
<?php

define('DB_NAME', 'wordpress');

define('DB_USER', 'wordpress');

define('DB_PASSWORD', 'wordpress');

define('DB_HOST', 'localhost');

define('DB_CHARSET', 'utf8');

define('DB_COLLATE', '');

define('AUTH_KEY',         'M~1q=g~*:(}K=lo0tFovCU|0zbVNF-`,-/?PqZvJfD0Oivq@v}SA#$m+%#|(C,Tv');
define('SECURE_AUTH_KEY',  '+ARpu(vBjlf*.s}-Y6ot?B~Xp/e-Ke$%X&+<dNInRCC0Hh/6N}[wb}u3t`kWFFHD');
define('LOGGED_IN_KEY',    'hW/PD~ZS/^Nifw)]_h*_|{na<Q/@}HTuO6SNUSc%S^fYVzZzBGV M@bVUdV2ptOn');
define('NONCE_KEY',        '@_{C<UAaYcKg!7tOtv;Ywtvdaz@t?W[6L/a1nMqatC0-6m,N-+_P%~4d+FR{:6');
define('AUTH_SALT',        ')+^ BM!eJ|^Sr>S+TR{_3[|g#}X #O!_s&~#a|.z}e-JBve~~fxGOBma.iYAoJsP');
define('SECURE_AUTH_SALT', 'S-I^C&~<Nep5e<-D}Q7wN*V|:0hz*IDLBwYul_h1kWo?+$VTOnDG&3,~KmjQ}H+Y');
define('LOGGED_IN_SALT',   '=D}{]W%{8`7RvrWqs2A]@{}EP2<37B5|mU[SEK.p0bD4?Nf-;AP,La]GG96|5ECo');
define('NONCE_SALT',       'cxJQM=U~#?Z/gU]B+jNe8.keg3= RrF&s_+)UsqO#pQc%;[294YsH7xYRUd9$ik-');

$table_prefix  = 'wp_wordpress';

define('WPLANG', 'ja');

define('WP_DEBUG', false);

if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Dockerにもそこそこ慣れてきましたね。
shefとかpuppetとかまだ使ったことがなかったので、こういう環境がまた新鮮だわ。

 

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

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