因为,每一次换环境都要重新弄 Hexo 的环境,才能愉快的写文(wu)章(liao)。于是乎,想到肯定有人把环境弄成 Docker 的,挂在目录就行了。这不,一搜就搜到了一个镜像。 simplyintricate/hexo

准备

  1. 在你的 GitHub pages 项目另外创一个分支,用来存放你的 Hexo 源码。
  2. Docker 环境

正式开始

  1. 由于不需要改动镜像里面的东西,就不重新 build 特定的 image 了。直接

    docker pull simplyintricate/hexo

    当然,国内我喜欢用 daocloud 的加速服务

    dao pull simplyintricate/hexo
  2. 将源码 clone 下来

    git clone -b [你的分支] [你的地址.git]

    这里有个坑,就是如果你的 theme 依赖别人的 git 项目,他是没有被 clone 下来的,这时候需要手动去 clone ,还有一些 theme 的 config 也没有定制好,这里要自己去配置一下。

  3. 挂载目录

    1. /root/.ssh/ 如果需要部署,就挂载
    2. <hexo source dir> 这个不用说了
    3. <hexo themes dir> 主题地址
    4. <hexo _config.yml> 配置一定要挂载
    5. <hexo package.json> 如果你的版本跟镜像不一致,就需要挂载上去。
    6. 所以最后的启动命令看起来是这样的

      docker run --name hexo -it -p 4000:80 -d -v <hexo dir>/source:/usr/share/nginx/html/source -v <hexo dir>/themes:/usr/share/nginx/html/themes -v <hexo dir>/_config.yml:/usr/share/nginx/html/_config.yml -v <hexo dir>/package.json:/usr/share/nginx/html/package.json simplyintricate/hexo
  4. 访问 4000 端口就能看到效果了

  5. 与容器交互

    1. docker exec -it hexo hexo generate 重新生成
    2. 主要是这条命令啦docker exec 剩下就是执行 bash 命令了。doc Docker-exec

结语

Docker 实在是太方便了。Docker 实在是太方便了。Docker 实在是太方便了。

后话

其实可以 build 一个专门的镜像,扔到 CI 上去,每当 [你的源码] 分支有更新,就自动构建,自动部署。(特么的,真想转运维了。好玩)