dockerfile编写gitbook容器

一、制作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:\Users\qingjiegong\Desktop\data\gitbook:/gitbook gitbook:1.0 /bin/bash

–name gitbook-qingjiegong:容器名称,自己取 -p 14001:4000:把容器中的4000端口映射到本地14001端口,这个也随意

-v 主机C:\Users\qingjiegong\Desktop\data\gitbook目录映射容器/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

编辑SUMMARY.md和README.md文件

SUMMARY.md

# 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)

README.md

2.Error:no such file fontsettings.js

这个报错不一定会有,我用Win10装的Docker里有这个问题,用Ubuntu20.04 LTS的服务器上也是Docker里装,就没碰到这个报错。

执行gitbook servegitbook 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就没问题啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值