KUSANAGI Runs on Docker

这篇文章将说明如何使用 KUSANAGI Runs on Docker (以下KUSANAGI RoD) 创建WordPress环境。

概要

透过Docker-machine,KUSANAGI RoD能运行超高速WordPress虚拟机KUSANAGI。
KUSANAGI RoD虽然能为WordPress环境提供超高速KUSANAGI虚拟机,但由于和还是测试版本,还会有些限制。

  • ・系统要求
    KUSANAGI RoD可对应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

您可以参考以下的链接,安装Docker在Windows、Mac、Linux等。

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

参考如何在本地 VM上使用Docker Machine   ,在VirtualBox 上创建docker-machine。
根据下图显示,我们创建Docker-machine并取名为kusanagi-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。
根据下图显示,我们创建docker-machine并取名为kusanagi-azure
您可以指定数据库的地区并指定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

你会被定期要求用户认证,请打开网页及输入下面表示的认证码(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 ,在Docker-machine上创建KUSANAGI RoD。

 

  • (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 entry里变更環境变数。

    • ・kusanagi-nginx
    項目 説明
    PROFILE kusanagi provision 的引数里所指定的PROFILE名
    FQDN kusanagi provision 执行時所指定的host名
    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里指定host名,打开浏览器,照着通常的WordPress的初期设定进行设定。
这个时候,根据以下显示设定数据库。

項目 説明
数据库名 MYSQL_DATABASE 所指定的文字列。上记例为wordpress
用户名 MYSQL_USER 所指定的文字列。上记例为user
密码 MYSQL_PASSWORD 所指定的文字列。上记例为password
数据库的host名 登录kusanagi-nginx:上的links,mysql的host名。上记例为mysql
表前缀 你可任意输入和设定。默认设定为wp_