1.在离线机器上安装docker,参照:https://blog.csdn.net/strut/article/details/109603080
2. 找一台相同架构的联网机器,安装docker并制作docker镜像(安装docker参照:参照:https://blog.csdn.net/strut/article/details/109603080)
a) 编写Dockerfile
mkdir gitbook
cd gitbook
vi Dockerfile
以下是Dockerfile的内容
# Use an official Node.js runtime as a parent image
FROM node:8.11.1
# Set npm registry to China Taobao and install Gitbook
RUN npm config set registry https://registry.npm.taobao.org && \
npm install gitbook-cli -g && \
gitbook -V && \
mkdir /gitbook && \
apt-get update && \
apt-get -y install libnss3 && \
apt-get -y install libxcomposite1 && \
apt-get -y install libxdamage1 && \
apt-get -y install libXi6 && \
apt-get -y install libgl1-mesa-glx && \
mkdir -p /opt/calibre && \
wget https://download.calibre-ebook.com/3.39.1/calibre-3.39.1-x86_64.txz && \
tar -vxf calibre-3.39.1-x86_64.txz -C /opt/calibre/ && \
/opt/calibre/calibre_postinstall && \
gitbook init /gitbook
# Make port 4000 available to the world outside this container
EXPOSE 4000
CMD ["sh", "-c", "gitbook install /gitbook; setsid gitbook serve /gitbook"]
b) 生成镜像
# 最后是镜像名和版本,可以根据实际情况更改
sudo docker build -t gitbook_calibre:3.2.3 .
c) 运行镜像
# 启动可能会较慢
docker run -d -p 4000:4000 -v /home/docker_practice:/gitbook gitbook_calibre:3.2.3
d) 解决导出pdf中文不显示(不需要可忽略)
1、 docker attach 容器ID,进入容器
2、在/gitbook/_book/search_index.json
文件上添加plugins
属性。
"plugins": ["yahei"]
3、配置pluginsConfig
下fontSettings
属性,使用msyh
> 微软雅黑字体
"pluginsConfig": {"fontSettings": {"family": "msyh","size": 2}}
4、手动从windows系统的Fonts目录下复制msyh.ttc
文件或msyh.ttf
文件上传到Linux的/usr/share/fonts/truetype
目录下
找不到msyh.ttc
文件可以从 控制面板 > 外观和个性化 > 字体 中复制对应的字体文件到/usr/share/fonts/truetype
目录下
也可以使用其他的字体文件,记得同步更改配置文件中fontSettings
的属性值
--- 不存在truetype文件夹则新建
# mkdir -p /usr/share/fonts/truetype
5、重新生成pdf
gitbook pdf ./ ./gitbook-notebook.pdf
3.打包镜像
确定gitbook正常使用之后,将容器打包成镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
如: docker commit -a "zhx" -m "gitbook" a404c6c174a2 mygitbook:v1
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
将镜像保存为tar包
docker save [OPTIONS] IMAGE [IMAGE...]
如:docker save -o mygitbook.tar mygitbook:v1
3. 将打包的镜像放到离线机器
docker load [OPTIONS]
如: docker load --input mygitbook.tar
OPTIONS 说明:
-
--input , -i : 指定导入的文件,代替 STDIN
-
--quiet , -q : 精简输出信息。
在新的机器上再此使用docker images命令查看本机的镜像,检查刚才load的镜像有没有加载进来,发现加载进来的镜像名称、标签均为none,使用docker tag eb40dcf64078 gitbook_calibre:3.2.3 修改为原来的镜像名称和标签名称,其中eb40dcf64078 为images id
4.在离线的机器上运行docker镜像
# 启动可能会较慢
docker run -d -p 4000:4000 -v /home/docker_practice:/gitbook gitbook_calibre:3.2.3