hexo个人博客docker搭建(1), 用于发布前的页面测试和预览
使用dockerfile构建镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| FROM node:15.7.0-alpine3.10
WORKDIR /usr/blog
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add bash git openssh
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && apk del tzdata
RUN \ npm config set registry https://registry.npm.taobao.org \ && npm install \ && npm install hexo-cli -g \ && npm install hexo-server --save \ && npm install hexo-asset-image --save \ && npm install hexo-wordcount --save \ && npm install hexo-generator-sitemap --save \ && npm install hexo-generator-baidu-sitemap --save \ && npm install hexo-deployer-git --save \ && npm install hexo-renderer-swig --save \ && npm install nprogress --save \ && npm install hexo-tag-aplayer --save \ && npm install zoom-image --save \ && npm install disqusjs --save \ && npm install pm2 -g
EXPOSE 4000
|
构建镜像
1
| docker build -t hexo-local:latest .
|
启动镜像
将容器内的/usr/blog映射到本地/docker/hexo/data
1
| docker run --name hexo -d -ti -p 4000:4000 -v /docker/hexo/data:/usr/blog/ hexo-local:latest
|
编译静态文件
启动服务
后台启动
1 2 3 4 5 6 7 8 9 10 11 12
| vi run.js
const { exec } = require('child_process') exec('hexo server -p 4000 >> /usr/blog/log/hexo/hexo`date +\%Y\%m\%d\%H\%M\%S`.log',(error, stdout, stderr) => { if(error){ console.log('exec error: ${error}') return } console.log('stdout: ${stdout}'); console.log('stderr: ${stderr}'); })
|
运行脚本
停止hexo
可能会遇到停止后服务依旧启动, 使用kill命令杀进程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| bash-5.0# top
Mem: 7830572K used, 158948K free, 23836K shrd, 128K buff, 3165012K cached CPU: 0% usr 0% sys 0% nic 50% idle 43% io 0% irq 6% sirq Load average: 2.29 1.34 0.93 2/927 1526 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1505 1494 root S 341m 4% 0 0% {node} hexo 447 0 root S 288m 4% 0 0% {node} PM2 v5.1.2: God Daemon (/root/.pm2) 1494 447 root S 280m 4% 1 0% node /usr/blog/run.js 1 0 root S 275m 3% 0 0% node 1521 0 root S 2404 0% 1 0% bash 331 0 root S 2392 0% 1 0% bash 1526 1521 root R 1548 0% 1 0% top
bash-5.0# kill 1505
|
Hexo的源文件说明:
1、_config.yml站点的配置文件,需要拷贝;
2、themes/主题文件夹,需要拷贝;
3、source博客文章的.md文件,需要拷贝;
4、scaffolds/文章的模板,需要拷贝;
5、package.json安装包的名称,需要拷贝;
6、.gitignore限定在push时哪些文件可以忽略,需要拷贝;
7、.git/主题和站点都有,标志这是一个git项目,不需要拷贝;
8、node_modules/是安装包的目录,在执行npm install的时候会重新生成,不需要拷贝;
9、public是hexo g生成的静态网页,不需要拷贝;
10、.deploy_git同上,hexo g也会生成,不需要拷贝;
11、db.json文件,不需要拷贝。