利用Github+Docker+Hexo搭建个人博客(一)
前言
心血来潮,想要一个地方记录下记录个人博客的搭建过程
1、GitHub Pages
简单来说GitHub Pages 是 Github 免费给开发者提供的一款托管个人网站的产品,现在只能托管静态内容,但是博客就是静态的啊,所以非常适合用来搭博客。
2、Hexo
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
3、Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
正文
创建博客地址
创建一个Github Pages Repository
Github Pages Repository 跟普通的Repository一样,唯一的区别是名字必须叫做$username.github.io,创建好以后就可以访问这个域名,如果想要通过自己的域名访问也可以,这里就不详细介绍了。
构建含有Hexo博客的Docker镜像
1、基础镜像选择alpine
alpine是一个小巧、安全、简单得linux系统
Dockerfile
1 | FROM alpine:latest |
2、安装git和Hexo部署所需的环境
Hexo是基于nodejs开发的,所以需要安装nodejs,alpine的nodejs源里不包含npm,所以还要单独再安装npm
提交github采用git+ssh,所以还要安装openssh
Dockerfile
1 | RUN apk --update --no-progress add git nodejs npm openssh |
3、安装Hexo博客
安装好环境后就可以搭建hexo博客了,安装hexo很简单,只需要一个命令
nodejs环境
1 | npm install -g hexo-cli |
在Docker容器内命令
Dockerfile
1 | RUN npm install -g hexo-cli |
安装好hexo还需要创建静态网站,命令 hexo init .
是在当前目录生成博客,也可以指定文件夹hexo init <folder>
在/home
下创hexo
文件夹
Dockerfile
1 | WORKDIR /home/hexo |
生成好静态网站目录后可以看到
1 | ├── _config.yml |
目录具体作用可以查阅Hexo文档,这里不做说明
安装提交github插件
1 | npm install --save hexo-deployer-git |
挂载外部数据卷/home/hexo/source
这里是存储文章文件夹/home/hexo/themes
这里是主题文件夹/home/hexo/.ssh
这里是存储ssh密钥文件夹
发布到github的时候 ssh 验证会在用户根目录下的.ssh
文件及里查找密钥。因为我在镜像里创建了名为hexo
用户,根目录就是/home/hexo
Dockerfile
1 | VOLUME ["/home/hexo/source","/home/hexo/themes","/home/hexo/.ssh"] |
因为hexo安装和生成博客都是在root
用户权限下操作的,所以需要把\home\hexo
文件夹所有人改成hexo
用户
Dockerfile
1 | RUN chown -R hexo . |
shell脚本 在docker镜像被运行的时候执行
shell
1 | #!/bin/sh |
hexo命令说明hexo s -p 4000
或 hexo server 4000
启动服务并绑定$port
hexo cl && hexo d -g
或 hexo clean && hexo deploy -g
清除静态文件并重新生成发布
github发布 地址和权限信息在 _config.yml 配置
1 | deploy: |
再切换成hexo
用户
Dockerfile
1 | USER hexo |
结语
hexo容器构建好了,下一步就需要运行起来,下一篇文章讲讲docker容器