Docker搭建Gitbook
HDUZN

在网上看到用Gitbook写的教程/文档,感觉还挺方便看的,想用它来试一下写教程/电子书之类的。

看到安装Gitbook还挺方便的,跟Hexo一样(用的就是Hexo的博客),是一个基于Node.js 的命令行工具,可使用Github/Git 和Markdown 来制作精美的电子书。

于是,原来都装好了Node.js和git这些,感觉倒也方便,安装下Gitbook就行了。

谁料,是我年轻了,想的太简单了。

Gitbook直接安装方法

前提是已经安装了Node.js。然后用以下命令能安装上,是很方便了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1.安装 gitbook-cli
npm install -g gitbook-cli

# 2.版本,这里开始出问题,GitBook installing开始报错
# 然后修改了报错的polyfills.js文件,注释掉62~64行这3行内容,才成功安装
gitbook -V
# 结果如下:
# CLI version: 2.3.2
# GitBook version: 3.2.3

# 3.创建目录,初始化
mkdir gitbook-test
cd gitbook-test
gitbook init
# 结果报错:
# TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, ……

# 查看Node.js版本,v14.15.4
node -v

好家伙,前面那个问题好不容易解决,init初始化的时候还是挂了。然后查看下Node.js的版本,反正就是版本过高的问题,要么再安装个低版本的,但环境问题真是折腾人,就放弃了。

1
2
3
4
5
6
# 卸载Gitbook
# 1.找到C:\Users\{用户名}\.gitbook目录,删除
# 2.卸载
npm uninstall -g gitbook-cli
# 3.清除npm缓存
npm cache clean -f

Docker搭建Gitbook

不想折腾环境,就开始找Docker安装的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1.拉取镜像 https://hub.docker.com/r/tobegit3hub/gitbook-server
docker pull tobegit3hub/gitbook-server

# 2.创建目录 python\gitbook,回头用来作映射的
mkdir gitbook

# 3.创建容器
docker run -idt --name gitbook -p 14000:4000 -v E:\SynologyDrive\Gitbook\python\gitbook:/gitbook tobegit3hub/gitbook-server /bin/bash

# 4.进入容器
docker exec -it gitbook /bin/bash

# 5.进入容器后,默认是在/gitbook目录,用以下命令初始化
# 初始化后会在本地的gitbook映射目录下生成README.md和SUMMARY.md文件。
gitbook init

6.编辑SUMMARY.md和README.md文件

比如SUMMARY.md文件内容如下(README.md文件随便写点内容):

1
2
3
4
5
6
7
8
9
10
11
12
# Summary

* [简介](README.md)
* [前言](README.md)
* [第一章](part1/README.md)
* [第一节](part1/1.md)
* [第二节](part1/2.md)
* [第三节](part1/3.md)
* [第四节](part1/4.md)
* [第二章](part2/README.md)
* [第三章](part3/README.md)
* [第四章](part4/README.md)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 7.再次执行init
# 会发现安照SUMMARY.md文件的内容自动生成对应的目录结构和md文件
gitbook init

# 8.启动服务,在线预览(会生成 _book目录,静态HTML)
# 然后打开 http://localhost:14000 就可以看到电子书了(我把4000端口映射到14000了)
gitbook serve

# Gitbook输出格式
# 1).输出静态HTML页面,生成 _book 目录;
# 也可以用参数指定目录名:gitbook build ./ --output=./_book/
gitbook build
# 2).输出PDF文件
gitbook pdf

9.文件权限问题

如果是直接在本机上映射的目录里的文件直接编辑就行,就没啥问题。

但如果我是在Linux的服务器上用Docker建了gitbook容器的,映射的目录是在Linux的机器上,
然后我是本地编辑好了,再上传到Linux服务器的映射目录里,然后就有文件权限问题了。

比如修改完的 SUMMARY.md 文件上传想覆盖原来的文件,就报权限问题了。

所以直接在Linux服务器的映射目录下执行chmod 777 *命令,把权限都给了就行。

10.插入图片

如果需要插入图片的,建议使用相对路径,很方便。

直接在 python\gitbook 目录下建一个imgs目录,用于存放图片。

比如我在imgs目录下放了一张图片:gitbook.png
然后用Markdown语法使用就行:
![](\imgs\gitbook.png)

或者:
<img src="/imgs/gitbook.png" style="zoom: 75%;"/>

后面这种还可以按比例显示,反正写Hexo博客时,我就一直偏爱用后者。

11.配置文件book.json

python\gitbook 目录下自己建个book.json文件。

内容一般就标题、作者这些,比如:

1
2
3
4
5
6
7
8
9
10
11
12
{
"title": "GitBook学习笔记",
"description": "记录Gitbook的配置和一些插件的使用",
"author": "hduzn",
"language": "zh-hans",
"gitbook": "3.2.3",
"links": {
"sidebar" : {
"Home" : "https://www.hduzn.cn/"
}
}
}

配置文件中更多的内容,网上搜一下就有。

PS.如果跟我一样,嫌弃gitbook的版本太旧了,可以考虑自己制作下Gitbook的镜像:Docker Dockerfile制作Gitbook镜像

  • 本文标题:Docker搭建Gitbook
  • 本文作者:HDUZN
  • 创建时间:2023-01-10 15:02:58
  • 本文链接:http://hduzn.cn/2023/01/10/Docker搭建Gitbook/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论