gitbook是7年前的镜像了,用gitbook -V
查看了下gitbook的版本,竟然是:0.3.4
于是,决定还是自己用Dockerfile制作个Gitbook的镜像好了。
用Dockerfile制作镜像也挺方便的,第一次生成镜像的时候花点时间。
一、制作Gitbook镜像
1.Dockerfile文件
node的版本反正用12点几的还是有问题,索性降到8,反正是没问题的。
因为我只是需要环境,并不是直接就生成电子书了,所以最后的CMD的命令也不需要执行。
Dockerfile文件内容如下:
# Use an official Node.js runtime as a parent image
FROM node:8.11.1
# creates a directory with this name if it doesn’t exist
# WORKDIR:设置容器启动后的默认运行目录 /gitbook
WORKDIR /gitbook
# Set npm registry to China Taobao and install Gitbook
RUN npm config set registry https://registry.npm.taobao.org
RUN npm install gitbook-cli -g
RUN gitbook -V
# Make port 4000 available to the world outside this container
EXPOSE 4000
# CMD ["sh", "-c", "gitbook install /gitbook; gitbook serve /gitbook"]
2.生成镜像
因为有本地安装过,所以知道现在的gitbook版本是:3.2.3,不确定的话,这里的版本号自己看着写吧。自己编一个差不多的也行。
注意最后有个点表示当前目录,所以需要在Dockerfile文件所在的目录下运行此命令。
docker build -t gitbook:1.0 .
等待制作完成,估计需要几分钟。完成后用命令docker images
就可以看到 gitbook:3.2.3 这个镜像了。
二、运行Gitbook容器
1.运行Gitbook容器
docker run -idt --name gitbook-qingjiegong -p 14001:4000 -v C:UsersqingjiegongDesktopdatagitbook:/gitbook gitbook:1.0 /bin/bash
–name gitbook-qingjiegong:容器名称,自己取
-p 14001:4000:把容器中的4000端口映射到本地14001端口,这个也随意
-v 主机C:UsersqingjiegongDesktopdatagitbook目录映射容器/gitbook gitbook:3.2.3目录
/bin/bash 启动容器后启动bash
# 进入容器
docker exec -it gitbook-qingjieong /bin/bash
# 初始化,会生成README.md 和SUMMARY.md文件
gitbook init
# 编辑README.md 和SUMMARY.md文件后再次执行,生成目录、文件
gitbook init
# 启动服务,在线预览,打开 http://localhost:14001 就可以看到了
gitbook serve
2.Error:no such file fontsettings.js
这个报错不一定会有,我用Win10装的Docker里有这个问题,用Ubuntu20.04 LTS的服务器上也是Docker里装,就没碰到这个报错。
执行gitbook serve
或gitbook build
都会报错:
Error: ENOENT: no such file or directory, stat '***/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js'
解决方法:
找到/root/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js
文件:
return fs.copyDir(
assetsFolder,
assetOutputFolder,
{
deleteFirst: false,
overwrite: true,
confirm: true
}
);
把confirm: true
修改为confirm: false
,注意有2处!
这个文件的路径中有个gitbook的版本号,找对应的版本号。可先在容器内查看找到此文件。
因为用的Docker,所以使用 Docker 容器修改方法如下:
# 1.把copyPluginAssets.js文件从容器中拷到当前目录下
docker cp gitbook-qingjiegong:/root/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js ./copyPluginAssets.js
# 2.按上面的方法修改copyPluginAssets.js文件
# 3.再把修改后的copyPluginAssets.js文件覆盖容器内的文件
docker cp copyPluginAssets.js gitbook-qingjiegong:/root/.gitbook/versions/3.2.3/lib/output/website/copyPluginAssets.js
再执行gitbook serve
就没问题啦。
原文始发于微信公众号(蝉蜕):docker Dockerfile制作Gitbook镜像
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论