用 Docker 搭建 Hexo 博客

这几年不会 Docker 都不好意思出门见人,传统的方式来搭建 Hexo 博客已经不 cool 了,下面来介绍下怎样用 Docker 来搭建 Hexo 博客。

1. 准备 Hexo 博客源码

创建一个目录,把 Hexo 博客源码都放进去,或者直接 cd 到现有的 Hexo 源码目录。

在目录中设置好主题,要发布的文章等,用 hexo server 看效果,一切准备完毕。

2. 创建 Dockerfile

在 Hexo 源码根目录下创建 Dockerfile 文件

1
touch Dockerfile

Dockerfile 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM centos:7

LABEL author=liuduo email=liuduome@gmail.com site=http://liuduo.me

WORKDIR /app

ADD . /app

RUN yum install -y epel-release && \
yum install -y nodejs && npm install hexo-cli -g

EXPOSE 4000

ENTRYPOINT ["hexo", "server"]

下面来分步说明:

1
FROM centos:7

FROM 用来指定父镜像,这里用 centos 作为父镜像,指定 centos 的版本为 7。其后的任务都会在这个父镜像内进行。

1
LABEL author=liuduo email=liuduome@gmail.com site=http://liuduo.me

LABEL 用来指定一些信息,例如作者,邮箱,网址等等,这个也可以不写。

1
WORKDIR /app

指定工作目录为 /app

1
ADD . /app

把当前目录中的文件(Hexo 源码)都拷贝到容器的 /app 目录中。

1
2
RUN yum install -y epel-release && \
yum install -y nodejs && npm install hexo-cli -g

在前面指定的工作目录(/app)下执行一些命令,这里做了添加 EPEL 源,安装 nodejs,安装 hexo 三件事情。

1
EXPOSE 4000

指定容器对外提供服务的端口为 4000。

1
ENTRYPOINT ["hexo", "server"]

服务启动的入口点,这里为执行 hexo server

3. 生成镜像

使用 docker build 命令基于 Dockerfile 来构建镜像。

1
docker build -t my-hexo-blog .

docker build 命令的使用格式为:

1
docker build [OPTIONS] PATH

上面先通过 -t my-hexo-blog 参数指定了镜像名为 my-hexo-blog。

随后指定了要基于哪个目录构建,用 . 来代表当前目录。

镜像生成完成后,可以执行下面命令:

1
docker image ls

来查看当前镜像列表中是否已经存在 my-hexo-blog 镜像。

4. 通过镜像启动并运行一个容器

通过 docker container run 来运行容器

1
docker container run -d -p 4000:4000 [容器ID] 

-d 参数代表放在后台运行,这样当前命令行中不会打印服务的运行日志。

-p 指定了本机端口和容器端口的映射,这里本机端口和容器端口都使用 4000,因此是 -p 4000:4000

命令执行完后,打开浏览器输入 http://localhost:4000 就能看到自己的博客了。

5. 把镜像保存到文件

用 docker save 来保存镜像到文件。

1
docker save my-hexo-blog > ./my-hexo-blog.tar

上面命令中镜像名和文件名都可以换成自己的。

保存成文件后,可以把这个文件随便拷贝到任何一台部署了 docker 服务的计算机上。

6. 加载镜像文件

将镜像文件拷贝到一台部署了 docker 服务的计算机上后,可以用 docker load 来加载镜像文件。

1
docker load < ./my-hexo-blog.tar

然后查看下本机镜像列表

1
docker image ls

会发现新的计算机上也有这个镜像了,然后可以用上面提到的 docker run 来用这个镜像运行一个容器了。