Hexo をDocker Compose を使って動かしてみました。
Dockerfile の準備
node:alpine をベースにテーマで使用するモジュール群と、Web から更新するためのhexo-admin
を追加しています。
./DockerfileFROM node:alpine
MAINTAINER ktkr3d <ktkr3d@gmail.com>
WORKDIR /hexo
RUN \ apk add --no-cache git openssh-client \ && npm install hexo-cli -g \ && hexo init . \ && npm install \ && npm install hexo-generator-sitemap --save \ && npm install hexo-generator-feed --save \ && npm install hexo-generator-searchdb --save \ && npm install hexo-deployer-git --save \ && npm install hexo-tag-bootstrap --save \ && npm install hexo-generator-search --save \ && npm install hexo-admin --save
VOLUME ["/hexo/source", "/hexo/themes", "/root/.ssh"]
EXPOSE 4000
COPY hexo-deploy.sh /hexo/hexo-deploy.sh COPY docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ['/bin/bash']
|
エントリポイントシェル
docker-entrypoint.sh#!/bin/sh
umask 0000
git config --global user.name $GIT_USER_NAME git config --global user.email $GIT_USER_EMAIL
/usr/bin/env hexo server
|
hexo-admin モジュール用のデプロイシェル
https://github.com/vladpurga/hexo-admin-deploy-command
./hexo-deploy.sh#!/usr/bin/env sh hexo deploy
|
Docker イメージのビルド
$ docker build -t local/hexo .
|
Docker Compose の準備
GIT_USER_NAME
とGIT_USER_EMAIL
にdeploy するためのユーザ情報を設定します。
リスタート時に自動起動するようにrestart: always
を指定しました。
./docker-compose.ymlversion: '2' services: hexo-server: restart: always image: local/hexo container_name: hexo-server ports: - "4000:4000" volumes: - /etc/localtime:/etc/localtime:ro - $HOME/.ssh:/root/.ssh - $PWD/source:/hexo/source - $PWD/themes:/hexo/themes - $PWD/_config.yml:/hexo/_config.yml environment: - GIT_USER_NAME=ktkr3d - GIT_USER_EMAIL=ktkr3d@gmail.com
|
既存Hexo 環境のコピー
以下の構成になるように、_config.yml
、source/
、themes/
を既存のHexo 環境からコピーします。コピーしないとHexo のデフォルトの状態になります。
. ├── Dockerfile ├── README.md ├── _config.yml ├── docker-compose.yml ├── docker-entrypoint.sh ├── hexo-deploy.sh ├── source/ └── themes/
|
起動と停止
$ docker-compose up -d $ docker-compose down
|
Web からのアクセス
コマンドでのアクセス
普通にHexo のコマンドをDocker 経由で実行します。
$ docker exec -it hexo-server hexo new post "Test" $ docker exec -it hexo-server hexo generate $ docker exec -it hexo-server hexo deploy
|