Hexo博客具有以下优点:

1.快速: Hexo基于Node.js开发,采用静态页面生成的方式,具有快速的渲染速度,可以快速加载和显示页面内容。
2.简洁: Hexo的设计理念是简洁高效,提供了简单易用的命令行工具,帮助用户快速创建和管理博客内容。
3.灵活: Hexo提供了丰富的主题和插件,可以自定义博客的外观和功能,满足个性化的需求。
4.易于部署: Hexo生成的内容是静态文件,可以轻松部署到各种静态网站托管服务或者自己的服务器上。
5.支持多平台: Hexo可以在Windows、Mac和Linux等操作系统上运行,具有良好的跨平台兼容性。

总之,Hexo是一款简洁、快速、灵活且易于部署的博客框架,适合个人博客、技术博客等各种类型的网站搭建。

Hexo 官网     Github


1. Dockerfile 构建 HEXO 镜像

使用Dockerfile构建HEXO镜像具有以下优点:

1.可重复性: Dockerfile是一种文本文件,它包含了用于构建Docker镜像的所有指令和配置。使用Dockerfile构建HEXO镜像可以确保每次构建的镜像都是一致的,从而实现可重复性。
2.便捷性: 使用Dockerfile构建HEXO镜像可以将HEXO的安装和配置过程自动化,简化了手动安装和配置的步骤,提高了部署的效率。
3.灵活性: Dockerfile中的指令和配置可以自定义,根据需求进行修改和调整。可以自由选择需要的组件和插件,并进行相应的配置,以满足个性化的需求。
4.可移植性: 使用Dockerfile构建的HEXO镜像可以在不同的环境中运行,只需要安装Docker并加载镜像即可,无需担心依赖和环境的问题。
5.版本控制: 使用Dockerfile构建HEXO镜像可以将其纳入版本控制系统中,方便管理和跟踪镜像的修改和更新。

总之,使用Dockerfile构建HEXO镜像具有可重复性、便捷性、灵活性、可移植性和版本控制等优点,可以简化HEXO的安装和配置过程,并方便部署和管理。


1.1 创建并进入 HEXO 目录

1
sudo mkdir hexo && cd hexo

1.2 创建 Dockerfile 文件

1
sudo nano Dockerfile

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
34
35
36
37
38
39
40
41
FROM node

MAINTAINER MQDS <[email protected]>

# 将服务器端口设置为环境端口
ENV HEXO_SERVER_PORT=4000

# 安装依赖
RUN \
apt-get update && \
apt-get install git -y && \
apt install nano -y && \
npm install -g hexo-cli

# 设置工作目录
WORKDIR /app

# 暴露服务器端口
EXPOSE ${HEXO_SERVER_PORT}

# 构建一个基本服务器并进行配置(如果不存在),然后启动
CMD \
if [ "$(ls -A /app)" ]; then \
echo "***** App directory exists and has content, continuing *****"; \
else \
echo "***** App directory is empty, initialising with hexo and hexo-admin *****" && \
hexo init && \
npm install && \
npm install --save hexo-renderer-pug && \
npm install --save hexo-renderer-stylus && \
npm install --save hexo-wordcount && \
npm install --save hexo-generator-searchdb && \
npm install --save hexo-generator-sitemap && \
npm install --save hexo-generator-index-pin-top && \
npm install --save hexo-generator-feed && \
npm install --save hexo-abbrlink && \
npm install --save hexo-blog-encrypt && \
npm install --save hexo-filter-nofollow; \
fi; \
echo "***** Starting server on port ${HEXO_SERVER_PORT} *****" && \
hexo server -d -p ${HEXO_SERVER_PORT}

1.3 构建名称为 my_hexo 镜像

1
sudo docker build -t my_hexo . 

如有错误,可以清理镜像

1
>sudo docker image prune -a && sudo docker builder prune -a

2. 创建 Docker-Compose 配置文件

1
sudo nano docker-compose.yml

Docker-Compose 配置文件 ↓

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3.8'
services:
hexo:
container_name: my_hexo
environment:
# 不建议改,如果这边的 4000 改了,下面 ports 部分,冒号右边的 4000 也需要修改
- HEXO_SERVER_PORT=4000
# 时区
- TZ=Asia/Shanghai
volumes:
# 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 blog 文件夹中
- './data:/app'
ports:
# 冒号左边可以改成自己服务器未被占用的端口
- '4000:4000'
image: my_hexo
restart: always

3. 运行 my_hexo 容器

1
sudo docker-compose up -d

4. 查看镜像启动日志

1
sudo docker logs --follow my_hexo

5. 生成默认页面

1
sudo docker exec -it my_hexo hexo cl && sudo docker exec -it my_hexo hexo g

6. 通过 IP 访问 HEXO 默认页面

6.1 打开防火墙端口

1
2
3
4
5
# 此 IP 172.8.8.2 为你的反代 NPM 容器地址
# 如果测试可以改为 0.0.0.0/0 即允许所有 IPV4 地址访问
# 如果你的 VPS 是大厂的(如:腾讯云、阿里云、谷歌云、甲骨云)还需要在后台防火墙放行 4000 端口

sudo ufw allow from 172.8.8.2 to any port 4000 proto tcp comment 'hexo'

6.2 公网访问

http://ip:4000