Gitbook介绍
官方简介:
Modern documentation format and toolchain using Git and Markdown.
一个开源易用的使用Markdown格式的编排书本程序。
Docker介绍
Docker 是一个开源的应用容器引擎。可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
基本概念
镜像
可以理解为一个打包好的的一整套程序,一“解压”出来就能整套系统上线了。
容器
可以理解为镜像的实例,即把“镜像”解压出来成为一个真正可以上线的系统文件。
DockerFile介绍
一系列的Docker指令集,可以类比成Linux的Bash命令集
构建思路
- 把gitbook的所有文章和文章目录文件放置在程序根目录下的
docs
文件夹下 - 同时那gitbook的配置文件与插件设置预设好,每次build docker都能自动化构建好
- 达到的效果是,我在本地只需要管好docs里的文章,每次需要上线展示,就直接docker build一次,放到线上docker run就能浏览了。
构建过程
直接编写Dockerfie文件
1 | FROM node |
下面一行一行来解释一下。
0
: 我们用dockerfile文件构建的是一个镜像,构建过程可以理解为,我们新建了一个容器,在容器里面运行各种操作,最后运行完就把这个容器以镜像的模式保存起来。1
: 我们直接使用Node官方提供的镜像,从node起步,避免虚拟机式使用带来的依赖性烦恼2
: 用来说明脚本编写者4
: RUN命令就如同你在linux的命令行界面下运行一条bash命令,在docker的容器内创建目录5
: 制定容器内的/gitbook目录为我们dockerfile接下来运行脚本的目录10
: 安装gitbook-cli,同时用gitbook -V查看一下gitbook的版本,这个命令同时也会把gitbook安装上(gitbook & gitbook-cli不是同一个程序噢)12
: 把宿主机里当前目录的book.json(gitbook配置属性的文件)复制到docker构建的容器中。14-16
: 这2个安装其实是提前安装了2个gitbook的插件,因为实际操作发现如果直接gitbook install安装,内存1g及其以下的主机会撑不住导致进程被killed,然后导致整个容器构建失败。18
: gitbook安装book.json中配置需要安装的插件19
: 把宿主机下的存储文章列表的文件夹复制到容器中21
: 开放容器的4000端口,用于与外界环境接驳22
: CMD命令是用于设置docker容器run时开启时运行的命令,一个dockerfile只能有一个cmd命令,多了就以最后的一条为准,这里的命令意思是在启动这个容器时自动运行gitbook serve,意思就是上线这个服务。
运行
构建镜像
在宿主机上,在项目根运行docker build . -t 'docker2gitbook'
,并等待构建完成。
运行镜像
在宿主机上,直接运行docker run -d -p 4000:4000 docker2gitbook
。
-d
: 后台运行-p xxx:yyy
: 端口映射,把docker容器的yyy端口映射到宿主机的xxx端口。实际用户能访问的是宿主机的端口噢。
检测
当你在宿主机的4000端口能够正常访问到gitbook项目主页,说明你已经成功运行了。
源码
我已经放到了Github里了,欢迎去看看。
直达通道
感谢一个名叫
大桥下的蜗牛
的docker高手指导