近期带着一些同事学习python,开始用markdown的格式写了很多练习题,一直有想法将其发布成一本电子书在公司内部分享。但由于有些内容可能涉及公司相关,无法直接对外发布。而公司内部自建了一个gitlab服务器,一直用于托管一些不是很重要的代码。所以,便有了将markdown托管到gitlab上,然后使用gitbook在内部进行发布。
另一方面,由于最近痴迷于Docker,所以,也同样将gitbook打包成docker image,用于快速发布。这篇文章主要用于记录整个操作过程。
gitbook+docker
本地安装
可参看gitbook的官方文档
-
环境需求
gitbook需要nodejs环境
- NodeJS (v4.0.0 and above is recommended)
-
安装gitbook-cli
1 | npm install gitbook-cli -g |
-
创建一本书
当使用gitlab时,可跳过此步骤
- 创建存放书籍的目录
1
$ mkdir mybook
- 初始化
1
$ gitbook init
初始化完成后,将生成
SUMMARY.md
和README.md
- 插件安装
如果没有生成book.json,可自行创建
1
2
3
4
5
6
7
8
9
10
11
12
13{
"root": "./",
"title": "mybook",
"head_title": "My first book",
"description": "test with gitbook",
"author": "myname",
"output.name": "practice",
"gitbook": ">= 3.0.0",
"language": "zh-hans",
"plugins": [
]将插件在
plugins
字段中进行声明后,执行以下命令进行安装1
$ gitbook install
- 预览和发布自己的书
1
$ gitbook serve
随后可登陆http://localhost:4000来预览自己的书
docker镜像
其实在docker hub上搜索便可以得到gitbook的镜像,但本着学习的态度,还是自己动手练习制作自己的docker镜像。
由于nodejs有官方提供的docker镜像,所以,一切变得很简单
- Dockerfile
1 | FROM node:8-alpine |
- 编译docker镜像
1 | $ docker build --tag mygitbook . |
书的结构
当使用gitbook init
后会在当前目录生成两个文件:README.md
和SUMMARY.md
.
其中,README.md
用来对本书进行一些说明
而SUMMARY.md
则用来创建目录结构。
SUMMARY.md
1 | # Summary |
book.json
需要自己创建book.json
1 | { |
git-lab归档
在gitlab上创建自己的project并归档
在服务器上用docker启动预览
- 从gitlab上clone书的结构
- 启动docker并挂载gitbook的目录到docker中
1 | $ docker run -d -p 80:4000 -v /mybook:/book mygitbook |
插件及说明
非常感谢Zhangjikai的插件说明文档,然后我发现Zhangjikai和我一样使用了Hexo搭建了自己的blog,并且同样适用了Next的主题