目录
  1. 1. 前言
  2. 2. 目的
  3. 3. 实现步骤
    1. 3.1. 构造镜像
    2. 3.2. 博客存储路径初始化
    3. 3.3. 运行容器
Docker搭配Hexo简单不累

前言

hexo对于大部分技术友人来讲应该都不会太陌生,我也是他忠实用户之一,给我的感受是

  • 搭建方便
  • 简洁美观
    用过的人应该都说好吧。绝大部分的人会将hexo托管到github进行发布,而我呢向来不做大多数,我也不太喜欢在同样的环境配置上花费太多的时间,所以引入了docker(如果你不知道docker是啥,自己面壁去…),下面就看看这二者能发生什么样的化学反应吧

目的

  1. 迁移方便
  2. 文件操作方便
  3. 对文件的操作容器不需要重启

实现步骤

基本流程

  • 构造自己的docker for hexo镜像
    • 镜像自己保存下来或者传至阿里云,这样下次直接使用即可
  • 在宿主机创建自己的博文路径
  • 运行docker容器

构造镜像

下面是我所使用的额Dockerfile,供参考

1
# 默认加载node环境,省去安装时间
2
FROM node:12.12.0
3
# 镜像作者信息,选配
4
LABEL author=hjf email=xxx@qq.com site=http://missxhh.com
5
# 指定工作目录
6
WORKDIR /hexo-docker
7
# 将宿主主机当前路径下的blog文件夹复制到容器中(不要复制node依赖进来)(此处用COPY也行)
8
ADD ./blog /hexo-docker/blog
9
# 安装cnpm,我个人通常是使用cnpm来构建的
10
RUN npm install -g cnpm
11
# 安装hexo命令行
12
RUN cnpm install -g hexo-cli
13
# 切换文件夹
14
WORKDIR /hexo-docker/blog
15
16
# 初始化依赖
17
RUN cnpm install 
18
# 以下可以针对自己的主题安装特定所需的依赖
19
RUN npm install hexo-generator-feed
20
RUN cnpm install hexo-renderer-pug hexo-renderer-stylus --save
21
RUN cnpm install hexo-generator-search --save
22
RUN cnpm install hexo-wordcount --save
23
RUN cnpm install hexo-generator-index-pin-top --save
24
RUN cnpm install hexo-tag-aplayer --save
25
RUN cnpm install hexo-abbrlink --save
26
27
# 编译
28
RUN hexo g
29
30
# 指定对外端口
31
EXPOSE 4000
32
33
# 运行
34
ENTRYPOINT ["hexo", "server"]

好了,用来构建的文件就已经准备好了,参数的含义已经在上面的注释中都给出来了,然后将Dockerfile放到你宿主主机上面博客路径的上级,目的是在后续镜像构建的时候将hexo的项目直接复制进去

如果你要使用纯的hexo的话,在宿主主机上面可以不用准备任何的东西,只需要在Dockerfile中添加一句 hexo init 初始化hexo就行(要确保初始化的目录是空的)

处理好后接下来就是开始构建我们的镜像了,运行以下命令

1
docker build --rm -t hexo-blog .

参数说明:

  • –rm 构建完后移除中间使用的容器
  • -t 镜像名称

注意上面命令后面有个.不是我多打的

运行完,我们的镜像就构建完成了。

如果中间构建出错的话你在根据错误镜像排查,大部分是由于网络或者路径问题导致的依赖下载失败,如果出现,细心即可。
为了方便后续,将构建好的镜像好好存好哈

博客存储路径初始化

在宿主机上面新建好后续你博文要放的位置,比如这边我放在以下路径

1
mkdir -p /home/hexo-blog/blog/source/_posts/

运行容器

接下来就是启动容器了,运行如下命名:

1
docker run --name hexo --restart=always -p 4000:4000 -v /home/hexo-blog/blog/source/_posts/:/hexo-docker/blog/source/_posts/ -d hexo-blog

参数说明:

  • –name 容器名
  • –restart 重启选项,此处配置伴随容器的重启而重启
  • -p 端口映射
  • -v 路径挂载,这个就是挂载宿主机的博客路径和我们的docker内的博客路径
  • -d 指定镜像
文章作者: 黄建峰
文章链接: http://missxhh.com/posts/875655a6/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 黄建峰

评论