0%

基于hexo和docker搭建静态网站环境


作者: 耗子007


通过把hexo安装到docker容器中,然后在容器中启动hexo的服务。

构建hexo的docker镜像

基于node的docker镜像制作我们的hexo镜像,主要做了如下几件事:

  • 配置代理(内网需要)
  • 添加hexo工作目录
  • 安装全局hexo
  • 初始化hexo工作目录
  • 暴露hexo服务的端口
  • 在启动时,生成静态页面以及启动hexo服务

Dockerfile如下所示:


    FROM node
    MAINTAINER Haozi007

    ENV http_proxy http://name:password@proxy:8080
    ENV https_proxy http://name:password@proxy:8080
    # Create hexo work dir
    WORKDIR /blog
    RUN npm install -g hexo-cli
    RUN hexo init /blog
    EXPOSE 4000

    CMD hexo generate && hexo server

制作docker镜像


    docker build -t haozi/hexo .

启动hexo服务

可以通过docker的-v方法,把我们的markdown文档指定到容器中hexo的工作目录的source/_posts目录中,
这样当容器启动时,会自动生成对应的静态页面。
启动容器的命令如下:


    docker run --name hexo -itd -p 8088:4000 \
    -v /home/rtos/learning/workNotes/blogs:/blog/source/_posts \
    haozi/hexo

注:

  • -p把容器的4000端口映射到host的8088端口,这样访问host的8088端口,就可以访问我们的hexo网站了。
  • -v把markdown写的文档,映射到hexo的工作目录下的_posts目录,这样我们可以方便的更新文档

网站维护

可以把我们的所有markdown文档传到github或者其它内源保存。
每次更新文档的时候,有两种方法可以更新我们的hexo静态网站。

  • 只需要重启我们的hexo容器
  • 执行docker exec -it hexo /bin/bash进入容器,然后到/blog目录,执行hexo generate就可以了

前者需要重启容器,导致网站服务中断,后者比较麻烦,但是网站服务不好中断。