みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

gitbook-templateを試す

はじめに

HeRoMo/gitbook-template: A gitbook project templateがよさそう。

Gitbook 環境 マイ・ベストを参考に作業する。

が。docker関連が一切入っていないのでそこから。

dockerのインストール

Ubuntuではsnapで入れる方法が簡単。ここが参考になる。

まず古いバージョンを削除。

$ sudo apt-get remove docker docker-engine docker.io containerd runc

次にdocker-ceをインストールする。

$ sudo snap install docker --stable

dockerのエラー

docker関連のコマンドを実行すると次のようなエラーが発生する。

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/create?fromImage=hero%2Fgitbook&tag=latest: dial unix /var/run/docker.sock: connect: permission denied

dockerグループをシステムに追加した後、ユーザーをdockerグループに追加する。

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker
$ sudo snap restart docker

これは普通に見落としがち。

gitbook-templateの導入

$ curl https://codeload.github.com/HeRoMo/gitbook-template/zip/master -O
$ unzip master
$ mv gitbook-template-master your-gitbook-name
$ cd your-gitbook-name

gitbookの初期化

$ docker-compose run --rm gitbook init

必要かわからないが、ファイルの所有権を変更しておく

$ sudo chown -R ${LOGNAME}:${LOGNAME} gitbook

ローカルサーバの操作

docker-compose.ymlがあるディレクトリで操作する。

起動

$ docker-compose up -d

停止

$ docker-compose stop

再起動

$ docker-compose restart

plantuml-cloudプラグインの修正

リンク元にあった謎のセミコロン問題を回避するために一度コンテナにログインする。

$ docker-compose exec gitbook bash

npmが更新されていないように見えるためgitbook/node_modules/gitbook-plugin-plantuml-cloud/index.jsを直接修正する。

# cd gitbook/node_modules/gitbook-plugin-plantuml-cloud
# cp index.js index.js.tmp
# sed -i 's|`!\[\](/${uml.svgPath});`|`!\[\](/${uml.svgPath})`;|g' index.js.tmp
# mv index.js.tmp index.js

ファイルを壊すとコンテナが起動しなくなるのでテンポラリファイルで作業する。 最後のmvの前にdiffなどで確認すると安心。

その後コンテナを再起動する。

$ docker-compose restart

PDF出力

$ docker-compose run --rm gitbook pdf

まとめ

gitbookの導入としては環境も汚れないため便利。

PDF出力時の日本語フォントなど、細かいところは調整が難しい感じ。 gitbookのプラグインはbook.jsonに記述すれば勝手にやってくれるっぽい?