docker Dockerfile制作Gitbook镜像

admin 2024年2月15日15:02:24评论12 views字数 2280阅读7分36秒阅读模式

gitbook是7年前的镜像了,用gitbook -V查看了下gitbook的版本,竟然是:0.3.4

于是,决定还是自己用Dockerfile制作个Gitbook的镜像好了。

用Dockerfile制作镜像也挺方便的,第一次生成镜像的时候花点时间docker 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 这个镜像了。

docker Dockerfile制作Gitbook镜像

二、运行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 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就没问题啦。

docker Dockerfile制作Gitbook镜像

原文始发于微信公众号(蝉蜕):docker Dockerfile制作Gitbook镜像

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日15:02:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   docker Dockerfile制作Gitbook镜像https://cn-sec.com/archives/2194199.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息