KUSANAGI RoDの使い方(1)

KUSANAGI RoDの使い方(1)

2019年8月、KUSANAGI Rus on Docker(以降RoD)をリリースしました。RoDは、KUSANAGIと同じ環境をアプリケーションコンテナDocker上で動かすツールです。

KUSANAGI RoDの概要

RoDは、httpd(Apache/nginx)/PHP/MariaDBを機能要素として、 それぞれコンテナイメージとしてhubs.docker.comに用意しています。RoDでは複数コンテナをdocker-composeで制御するため、docker-compose.ymlファイルの作成を行います。そしてdocker-composeでKUSANAGI環境を立ち上げ、WordPressなどの構築を行います。

下記の図は、RoD の概念図となります。

KUSANAGI RoD概念図

docker-compose で、httpd/php/db というコンテナが作成されます。

httpdとphpは内部ネットワークで接続し、外部からの接続は行われません。

DBはデフォルトではunix socket を使用し、ネットワーク通信を行いません。DB情報はDockerボリューム(Docker Host内の恒久的なディスク領域)であるdbに配置され、PHPとDBはボリュームdbをマウントすることで、socket通信を行います。

phpは、httpdからのリクエストからPHPの実行結果を返します。phpとhttpdは、DocumentRoot以下をDockerボリュームkusanagiに配置されます。

configはDockerとDocker外のやり取りを行うためのDockerです。WordPressの場合はwpcliを、それ以外はkusanagi-config が使用されます。

ftpdは、KUSANAGI同様にWordPressのみ使用し、WordPressからプラグイン・テーマのアップロードに使用されます。

KUSANAGI RoDのインストール方法

README.md にある通り、kusanagi RoDはkusanagi-docker コマンドによりコントロールされます。kusanagi-dockerをインストールするために以下のコマンドを実行します。

curl https://raw.githubusercontent.com/prime-strategy/kusanagi-docker/master/install.sh | bash

このとき注意していただきたいのは、動作要件です。

  • bash(4.x 以上)
  • Git
  • sed
  • awk
  • grep
  • gettext(gettext.sh, envsubst)
  • curl
  • docker(over 18.0x)
  • docker-compose
  • docker-machine

docker-machineは必須でありません。ただしDocker Server が用意されていない場合などで、docker-machineは必要になります。
それ以外すべてのコマンドが、whichコマンドで見つけられることを動作要件としています。macOSではHomebrewなどでbash/gettextなどのコマンドをインストールする必要があると思いますが、PATHも設定しておいてください。

KUSANAGI RoDでWordPressを作成する

念の為、docker versionで、Dockerが動作する状態になっていることを確認してください。以下実行例です。Serverに接続できていることを確認してください。

$ docker version
Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:21:05 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.0-rc2
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       f97efcc
  Built:            Wed Jun  5 01:42:10 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

次に、以下のようにコマンド実行してください。FQDNとしてwp.localhost、ターゲットディレクトリとしてwordpressを指定します。

$ kusanagi-docker provision --fqdn wp.localhost wordpress
Creating network "wordpress_default" with driver "bridge"
Creating volume "wordpress_database" with default driver
Creating volume "wordpress_kusanagi" with default driver
Creating wordpress_config ... 
Creating wordpress_httpd ... 
Creating wordpress_config
Creating wordpress_httpd ... done
Creating wordpress_php ... 
Creating wordpress_ftp ... 
Creating wordpress_certbot ... 
Creating wordpress_db ... 
Creating wordpress_php
Creating wordpress_ftp
Creating wordpress_certbot
Creating wordpress_ftp ... done
 MYSQLの初期化を待っています....
WordPressを配置します
Downloading WordPress 5.2.3 (en_US)...
Warning: Failed to create directory '/.wp-cli/cache/': mkdir(): Permission denied.
md5 hash verified: bde83b629bc7a833f7000bc522cde120
Success: WordPress downloaded.
Success: Generated 'wp-config.php' file.
sendmail: can't connect to remote host (127.0.0.1): Connection refused
Success: WordPress installed successfully.
The file will have its original line endings in your working directory.
INFO: 完了しました。

これで、./wordpressというディレクトリが作成され、そこでWordPressがDocker上で起動されています。

以下は、wordpressディレクトリに移動して行います。

$ cd wordpress/
$ kusanagi-docker status
      Name                     Command               State                       Ports                   
---------------------------------------------------------------------------------------------------------
wordpress_certbot   certbot --version                Exit 0                                              
wordpress_config    docker-entrypoint.sh wp -- ...   Exit 0                                              
wordpress_db        docker-entrypoint.sh mysqld      Up                                                  
wordpress_ftp       /bin/sh -c /docker-entrypo ...   Up                                                  
wordpress_httpd     /docker-entrypoint.sh /usr ...   Up       0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp
wordpress_php       /usr/local/bin/docker-entr ...   Up    

kusanagi-docker statusで、現在のコンテナの状況がわかります。コンテナ名はターゲットディレクトリ名が頭に付きます。wordpress_httpd は、Dockerホストから80/443ポートがポートフォワードされます。

そのため、/etc/hostsに以下のように記述してブラウザで確認すると、WordPress画面を確認できます。

$ cat /etc/hosts
127.0.0.1       localhost wp.localhost

終わりに

今回は、KUSANAGI RoDによって簡単にDockerで動作するWordPressを作成できました。次回は、WordPress構築の詳細について述べようと思います。次回をお楽しみに。


KUSANAGI TIPSカテゴリの最新記事