0%

gitbook+gitlab发布私有的图书仓库

近期带着一些同事学习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.mdREADME.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
2
3
4
5
6
7
8
9
10
FROM node:8-alpine
MAINTAINER Bo Qi <simble1986@gmail.com>

RUN npm install gitbook-cli -g && npm install && gitbook install

WORKDIR /book

EXPOSE 4000 35729

CMD gitbook install && gitbook serve
  • 编译docker镜像
1
$ docker build --tag mygitbook .

书的结构

当使用gitbook init后会在当前目录生成两个文件:README.mdSUMMARY.md.

其中,README.md用来对本书进行一些说明

SUMMARY.md则用来创建目录结构。

SUMMARY.md

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Summary

* [介绍](README.md)
* [Git使用](gitSetup.md)
* [Python基础](part1/README.md)
* [练习1-列表](part1/1.md)
* [练习2-字典](part1/2.md)
* [练习3-数据结构嵌套](part1/3.md)
* [练习4-运算符](part1/4.md)
* [练习5-逻辑控制](part1/5.md)
* [练习6-异常处理](part1/6.md)
* [练习7-函数](part1/7.md)
* [练习8-文件操作](part1/8.md)
* [轻松一刻-猜数字游戏](part1/happy1.md)
* [练习9-类.1](part1/9.md)
* [练习10-类.2](part1/10.md)
* [练习11-类的继承](part1/11.md)

book.json

需要自己创建book.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
"root": "./",
"title": "练习python",
"head_title": "通过练习的方式来学习python",
"description": "通过小练习一点一点熟悉python",
"author": "myname(simble1986@gmail.com)",
"output.name": "通过练习学脚本",

"gitbook": "3.2.3",

"language": "zh-hans",
"links" : {
"sidebar" : {
"Home" : "http://www.simble.site"
}
},
"plugins": [
"autotheme",
"prism",
"prism-themes",
"-highlight",
"-search",
"search-pro",
"emphasize",
"splitter",
"tbfed-pagefooter",
"toggle-chapters",
"codeblock-filename",
"ace",
"simple-page-toc",
"edit-link",
"copy-code-button",
"alerts",
"anchor-navigation-ex",
"theme-comscore"
]
}

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的主题