「クールなウェブサイトやブログを作りたいけど、コンテンツは簡単にメンテナンスできるようにしたい」といった方にオススメしたいのが、 markdown形式のテキストファイルでコンテンツを管理する次世代フラットファイルCMS「Grav」 です。本稿では「Grav」の概要と構築手順についてご紹介します。(ヘッダー画像は「GitHub『getgrav/grav-theme-quark』」より引用)
「Grav」とは
「Grav」はオープンソース(MITライセンス)のフラットファイルCMSです。
ウェブサイトのコンテンツを 「markdown」 で作成することができ、ブラウザ上の管理画面から ウェブサイトの設定やブログ記事の投稿 も可能です。また クールなデザインのテンプレートが豊富に揃っている ため、ウェブサイトをゼロから作る必要がありません。このような使いやすさから、GravはCMS Criticが主催する『Best Open Source CMS』(2016年)、『Best Flat File CMS』(2017年)に選出されています。
「フラットファイルCMS」とは
「フラットファイルCMS」は最近注目されている データベースレス のCMS(Content Management System)です。ウェブサイトのコンテンツはデータベースで管理せず、 「markdown」や「YAML」などのテキストファイルで管理されます。 データベースと接続する必要がないため、 ページ表示までのレスポンスが速い ことも注目を集める一つの理由です。
Dockerで「Grav」を構築する
2018年4月現在、Gravは公式のDocker Imageを公開していないため、本稿では自身が作成したDocker Fileからコンテナを起動する手順をご紹介します。
要件
本稿で紹介するGravの構築手順に必要な環境は以下の通りです。
- Docker
- Docker Compose
Dockerイメージをビルドする
$ git clone https://github.com/yosukeo/docker-grav.git
$ cd docker-grav
$ docker-compose build
本稿の動作環境では、docker-compose build --no-cache
コマンドは開始から約2分半で完了しました。
$ time docker-compose build --no-cache
...
...
...
Successfully built 83f42b83e379
Successfully tagged dockergrav_grav:latest
real 2m39.562s
user 0m0.572s
sys 0m0.108s
Dockerコンテナを作成・起動する
$ docker-compose up -d
たった4つのコマンドを入力するだけ ですが、以上で「Grav」の構築は完了です。
動作確認をする
「Google Chrome」などのブラウザから、DockerホストのIPアドレス(xxx.xxx.xxx.xxx
)を指定してGravの画面表示を確認します。
- ホーム画面:
http://xxx.xxx.xxx.xxx
- 管理画面:
http://xxx.xxx.xxx.xxx/admin
ホーム画面
Gravがデフォルトで用意しているページが表示されます。
管理画面(ログイン)
docker-compose.yml
に設定しているADMIN_USER
とADMIN_PASSWORD
の値を入力します。デフォルト値は以下の通りです。
-
ADMIN_USER
:admin
-
ADMIN_PASSWORD
:0Gravity
管理画面(ダッシュボード)
以下のダッシュボードからコンテンツを管理します。サイトの設定からページの編集、プラグインやテーマのインストールなどの基本的な作業はダッシュボードから操作することができます。
管理者ユーザーのアカウント言語設定(language)において「日本語」を選択すると、ページを保存する際に「Unexpected character」となってページを保存することができなくなるのでご注意ください。
コンテナへログインする
以下のコマンドを入力することで、コンソールからコンテナへログインすることができます。本稿で使用しているDockerfileはPHP公式のDockerイメージであるphp:7.2.3-apache-stretch
をベースとしていますが、 コンソールの列数と行数を環境変数として指定しないとコンソールのレイアウトが崩れるので注意してください。
$ docker exec -it --env COLUMNS=`tput cols` --env LINES=`tput lines` grav bash
最後に
Dockerfile
やdocker-compose.yml
などの内容については、 GitHub『yosukeo/docker-grav』よりご確認ください。またウェブサイトの細かいカスタマイズについてはコンソールからファイルを編集する必要があります。Gravのカスタマイズ方法については別の機会にご紹介したいと思います。