这几年不会 Docker 都不好意思出门见人,传统的方式来搭建 Hexo 博客已经不 cool 了,下面来介绍下怎样用 Docker 来搭建 Hexo 博客。
1. 准备 Hexo 博客源码
创建一个目录,把 Hexo 博客源码都放进去,或者直接 cd 到现有的 Hexo 源码目录。
在目录中设置好主题,要发布的文章等,用 hexo server
看效果,一切准备完毕。
2. 创建 Dockerfile
在 Hexo 源码根目录下创建 Dockerfile 文件
1 | touch Dockerfile |
Dockerfile 内容如下:
1 | FROM centos:7 |
下面来分步说明:
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 | RUN yum install -y epel-release && \ |
在前面指定的工作目录(/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
来用这个镜像运行一个容器了。