今天心血来潮想要在GitHub Page上部署一个博客,本来想直接在Ubuntu上配好hexo的环境,可是npm的某些依赖版本和ros melodic不兼容,配置hexo以失败告终,因此我通过docker来绕过这个环境配置,以前只闻docker大名,没有真正用过,今天就来试一下。
环境:Ubuntu 18.04
1. docker
安装docker,参考华为云镜像中的dockers安装 https://mirrors.huaweicloud.com/home
配置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服务
常用的docker命令
1
2
3
4
5
6
7docker run #生成并启动一个容器
docker start #启动一个容器(如果容器关闭了可以通过这个调用)
docker exec #使容器执行某些指令,比如启动交互的bash等等,这个命令必须在容器正在运行的时候使用
docker stop #停止容器
docker ps #查看正在运行的容器
docker container ls -a #查看所有的容器
docker volume #构建容器数据卷,可以持久化存储
2. hexo
环境准备:接下来就是找一个hexo的镜像,并且跑起来,我找到的是taskbjorn/hexo(docker hub上找)
1
2docker 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作为基础的为了能完成部署,镜像中还需要装一些依赖
1
2apk add openssh
npm install hexo-deployer-git --save- 调用apk命令的时候需要root权限,在docker启动命令行的时候要指定参数
docker exec -it --user root my_hexo_container sh
hexo的基本使用:
1
2
3hexo new "article" #创建一个新页面
hexo g #生成静态页面
hexo d #部署- 注意在部署这一步,需要修改_config.yml文件,加入如下配置
1
2
3
4
5deploy:
type: git
# 填上你自己的仓库名,注意后面有`.git`
repository: git@github.com:xxx/xxx.github.io.git
branch: master - 注意此处的分支,如果是master的话,请改成main
- 注意在部署这一步,需要修改_config.yml文件,加入如下配置