docker部署hexo

今天心血来潮想要在GitHub Page上部署一个博客,本来想直接在Ubuntu上配好hexo的环境,可是npm的某些依赖版本和ros melodic不兼容,配置hexo以失败告终,因此我通过docker来绕过这个环境配置,以前只闻docker大名,没有真正用过,今天就来试一下。

环境:Ubuntu 18.04

1. docker

  1. 安装docker,参考华为云镜像中的dockers安装 https://mirrors.huaweicloud.com/home

  2. 配置docker registry的源:修改/etc/docker/dameon.json,添加下面的配置

    1
    2
    3
    4
    5
    6
    {
    "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
    ]
    }

    然后重启docker的服务sudo systemctl restart docker,查看是否添加docker info

    • 如果遇到权限问题,可以将当前用户加入docker用户组,再重启docker服务
  3. 常用的docker命令

    1
    2
    3
    4
    5
    6
    7
    docker run  #生成并启动一个容器
    docker start #启动一个容器(如果容器关闭了可以通过这个调用)
    docker exec #使容器执行某些指令,比如启动交互的bash等等,这个命令必须在容器正在运行的时候使用
    docker stop #停止容器
    docker ps #查看正在运行的容器
    docker container ls -a #查看所有的容器
    docker volume #构建容器数据卷,可以持久化存储

2. hexo

  1. 环境准备:接下来就是找一个hexo的镜像,并且跑起来,我找到的是taskbjorn/hexo(docker hub上找)

    1
    2
    docker volume create my_hexo_data
    docker run -it --name my_hexo_container -p 4000:4000 -v hexo_data:/home/hexo/.hexo taskbjorn/hexo

    这样会在my_hexo_data这个volume中构建一个hexo的基础文件夹(hexo init),这时候查看http://0.0.0.0:4000 就可以看到hexo的界面

    docker exec -it my_hexo_container sh
    启动命令行交互,这时候可以调用容器内的各种资源了,注意,容器是以alpine作为基础的

  2. 为了能完成部署,镜像中还需要装一些依赖

    1
    2
    apk add openssh
    npm install hexo-deployer-git --save
    • 调用apk命令的时候需要root权限,在docker启动命令行的时候要指定参数
    • docker exec -it --user root my_hexo_container sh
  3. hexo的基本使用:

    1
    2
    3
    hexo new "article" #创建一个新页面
    hexo g #生成静态页面
    hexo d #部署
    • 注意在部署这一步,需要修改_config.yml文件,加入如下配置
      1
      2
      3
      4
      5
      deploy:
      type: git
      # 填上你自己的仓库名,注意后面有`.git`
      repository: git@github.com:xxx/xxx.github.io.git
      branch: master
    • 注意此处的分支,如果是master的话,请改成main