KUSANAGI Runs on Docker

この文書では、KUSANAGI Runs on Docker(以下KUSANAGI RoD)上にWordPress環境を構築する方法を解説します。

概要

KUSANAGI RoDは、超高速WordPress仮想マシンKUSANAGIを、Docker-machine で動かします。
KUSANAGI RoDは、KUSANAGI同様に超高速なWordPress環境を提供しますが、ベータ版のため以下の制限事項があります。

  • ・動作環境
    動作環境として、nginx、php7、php5、MariaDBを使用できます。
    Apache2(httpd)およびhhvmについては、今後拡充します。
  • ・kusanagiコマンド
    kusanagi コマンドは使用できません。
    kusanagi provision の設定、bcache/fcache のon/offは、後述する docker-compose.ymlの環境変数にて指定します。
  • ・SSL設定
    Let’s Encrypt を使用したSSLの設定はできません。
    SSLの設定については、今後対応します。

インストール

KUSANAGI RoD を使用するためには、Docker、Docker-machine、Docker-compose が必要になります。
以下に、インストール方法を説明します。

Docker

以下のページを参考にして、Windows、Mac、Linuxのいずれかの環境に、Dockerをインストールします。

Docker machine

以下のページを参考にして、Docker-machine をインストールします。

Docker Compose

以下のページを参考にして、Docker-Compse をインストールします。

WindowsでDocker Toolbox をインストールしている場合には、Docker-Compose もインストールされています。

Docker-machine 作成

Docker-machineはWindows、Mac、Linuxにインストールすることができ、ローカルのVirtualBox や、クラウド上(Microsoft Azure、AWS EC2 など)に作成したdocker-machine上のDockerをコントロールすることができます。

VirtualBoxの例

Docker Machine をローカル VM で始めるには を参考にして、VirtualBox 上にdocker-machineを作成します。
以下の例では、kusanagi-machine という名前のDocker-machine を作成しています。

# docker-machine create --driver virtualbox --virtualbox-memory=8192 --virtualbox-cpu-count=2 kusanagi-machine

以下のコマンドで、docker-machineを作成できたことが確認できます。

# docker-machine ls                                                                 
NAME                    ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS         
kusanagi-machine        *        virtualbox   Running   tcp://192.168.99.100:2376           v1.11.1 
# docker-machine env kusanagi-machine
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/kusanagi-machine"
export DOCKER_MACHINE_NAME="kusanagi-machine"
# Run this command to configure your shell:

Azure の例

Docker マシンと Azure ドライバーを使用する を参考にして、Microsoft Azure 上にdocker-machineを作成します。
以下の例では、kusanagi-azureという名前のdocker-machineを作成しています。
このとき、 場所を東日本(Japan East)に、仮想マシンのサイズにStandart_D1 を指定しています。

# docker-machine create -d azure --azure-ssh-user rod \
  --azure-subscription-id <Your AZURE_SUBSCRIPTION_ID> \
  --azure-location "Japan East" \
  --azure-size "Standard_D1" \
  --azure-open-port 80 \
  kusanagi-azure

定期的にユーザ認証を促されるため、web pageから指定されたコード(以下ではXXXXXXXX)を入力してユーザ認証を実施してください。

(kusanagi-azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code XXXXXXXXX to authenticate.

以下のコマンドで、docker-machineを作成できたことが確認できます。

# docker-machine ls kusanagi-azure                                           
NAME               ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
kusanagi-azure     -        azure        Running   tcp://XXX.XXX.XXX.XXX:2376              v1.11.1 
# docker-machine env kusanagi-azure
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://XXX.XXX.XXX.XXX:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/kusanagi-azure"
export DOCKER_MACHINE_NAME="kusanagi-azure"
# Run this command to configure your shell: 
# eval $(docker-machine env kusanagi-azure)

Docker-compose で KUSANAGI RoD 構築

docker-compose を使用して、KUSANAGI RoDをDocker-machine 上に展開・構築します。

 

  • (1) GitHubから、kusanagi-docker を取得します。

 

# git clone https://github.com/prime-strategy/kusanagi-docker.git
# cd kusanagi-docker
# ls -A                                                                                                            
.git   LICENSE  README.md

 

  • (2) README.md の例から、docker-compose.yml を作成します。
    以下の例では、nginx-1.10.0-1、php-7.0.6 を使用した構成となります。

    # cat docker-compose.yml
    version: '2'
    
    services:
      kusanagi-data:
        container_name: kusanagi-data
        image: busybox
        restart: always
        stdin_open: true
        tty: true
        volumes:
          - /var/lib/mysql
          - /etc/nginx/conf.d
          - /etc/httpd/conf.d
          - /etc/kusanagi.d
          - /home/kusanagi
        command: /bin/sh
    
      kusanagi-nginx:
        container_name: kusanagi-nginx
        image: primestrategy/kusanagi-nginx:1.10.0-1
        environment:
          PROFILE: kusanagi
          FQDN: kusanagi.example.jp
          WPLANG: ja
          BCACHE: "off"
          FCACHE: "off"
        volumes_from:
          - kusanagi-data
        links:
          - kusanagi-php7:php
          - kusanagi-mariadb:mysql
        ports:
          - "80:80"
          - "443:443"
    
      kusanagi-mariadb:
        container_name: kusanagi-mariadb
        image: mariadb:10.0.24
        environment:
          MYSQL_ROOT_PASSWORD: my-secret-pw
          MYSQL_USER:     user
          MYSQL_PASSWORD: password
          MYSQL_DATABASE: wordpress
        volumes_from:
          - kusanagi-data
    
      kusanagi-php7:
        container_name: kusanagi-php7
        image: primestrategy/kusanagi-php7:7.0.6-1
        links:
          - kusanagi-mariadb:mysql
        volumes_from:
          - kusanagi-data
    

     

  • (3) 設定変更
    docker-compose.yml を修正し、environment エントリで指定する環境変数を変更します。

    • ・kusanagi-nginx
    項目 説明
    PROFILE kusanagi provision の引数で指定していたPROFILE名
    FQDN kusanagi provision 実行時に指定するホスト名
    WPLANG kusanagi provision 実行時に指定した言語。ja(日本語)か、en(英語)のどちらかを指定する
    BCACHE bcacheの使用有無を、”on” か “off” を指定する
    FCACHE fcacheの使用有無を、”on” か “off” を指定する
    • ・kusanagi-mariadb
    項目 説明
    MYSQL_ROOT_PASSWORD MySQLのrootユーザのパスワード
    MYSQL_USER WordPressで使用するユーザ名
    MYSQL_PASSWORD WordPressで使用するパスワード
    MYSQL_DATABASE WordPressで使用するデータベース名

     

  • (4) Docker 環境を構成します。
    使用するdocker-machine 名を指定して、Docker/Docker-compose を使用するための設定(環境変数)を構成します。

    # eval $(docker-machine env kusanagi-azure)
    

     

  • (5) docker-compose.yml を使用して、docker-machine で dockerを起動します。
    # docker-compose -p kusanagi-azure up
    # docker-compose -p kusanagi-azure ps
          Name                    Command               State                    Ports                   
    ----------------------------------------------------------------------------------------------------
    kusanagi-data      /bin/sh                          Up  
    kusanagi-mariadb   /docker-entrypoint.sh mysqld     Up      3306/tcp
    kusanagi-nginx     /docker-entrypoint.sh /usr ...   Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp 
    kusanagi-php7      php-fpm                          Up      9000/tcp
    

 

 

WordPress 設定

docker-compose.yml 内の環境変数FQDNで指定したホスト名を指定して、ブラウザで開き、通常通りWordPressの初期設定を行います。
この際、DBには以下の設定を指定します。

項目 説明
データベース名 MYSQL_DATABASE に指定した文字列。上記例ではwordpress
ユーザ名 MYSQL_USER に指定した文字列。上記例ではuser
パスワード MYSQL_PASSWORD に指定した文字列。上記例ではpassword
データベースのホスト名 kusanagi-nginx:のlinksに登録した、mysqlのホスト名。上記例ではmysql
テーブル接頭辞 任意の文字列。デフォルトはwp_