使用 docker 快速部署 hexo 博客

点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~

hexo 是一款静态博客工具,不涉及到任何后端、数据库啥的。

也就是说不管过程中怎么乱七八糟的捣鼓,最终其实在部署的时候需要使用的,其实就是一堆前端静态资源,htmljscssjpg 等等,也就是使用 hexo g 命令生成出来的 public 文件夹中所包含的部分。

那么通常来讲,对于没有个人服务器的同学来说,一般是使用 github page 的功能来将静态页面托管到 github 上,但是由于国内 github 速度感人,使用起来并不是那么顺畅。

如果有个人服务器的话,我们可以使用 nginx 作为静态资源服务器,来快速部署我们的博客。

下面将介绍如何利用 dockernginx 镜像来快速部署博客。

一、服务器安装 docker 环境

1. 安装 docker

参考: 在 linux、mac 下快速简单的安装 docker

2. 安装 docker-compose

docker-compose 并不是必须使用的,这里是为了更方便的管理我们的容器。

macos 下安装 docker 时自动就安装了 docker-composelinux 则需要使用下面的命令手动安装一下。

$ curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

二、初始化博客

使用 npm i -g hexo-cli 命令全局安装 hexo-cli,然后使用 hexo init blog 即可生成一个最简单的博客项目了。

然后在项目中新建一个 .npmrc 文件,将 registry=https://registry.npm.taobao.org 写入文件中,这个的作用是在安装依赖包将镜像源切换为国内的淘宝源。

此时可以执行 hexo s 命令后,在浏览器中访问 http://localhost:4000,就可以看到博客的页面了。
hexo s 启动

三、添加 Dockerfile 文件

这里需要理清楚思路的一点是,整个部署流程我们分为两个阶段,第一个阶段是生成静态文件,也就是使用 hexo g 命令生成 public 文件夹,此过程依赖 nodejs 环境,而第二个阶段则是启动 nginx

两个阶段我们会使用 dockerfile 的多阶段构建来实现,第一个阶段的 nodejs 容器中生成的 public 文件夹会被拷贝到第二个阶段的 nginx 容器中使用,最终生成的是一个包含了博客静态资源和 nginx 的镜像。

Dockerfile 文件如下

# /Dockerfile
FROM node:8-alpine as builder
WORKDIR /project
COPY . /project/
RUN yarn \
    && yarn global add hexo-cli \
    && hexo g

FROM nginx:alpine
COPY --from=builder /project/public /usr/share/nginx/html
RUN apk add --no-cache bash

因为是使用的 alpine 版本的镜像,并没有安装 bash,所有在部署完成后无法通过 docker exec -it xx bash 进入容器中,所以加上了一行 apk add --no-cache bash,如果没有后期进入容器的需求,可以删除这一行,提高构建时的速度。

三、添加 docker-compose.yml 文件

其实不使用 docker-compose,直接 docker run 也是可以的,但是使用 docker-compose 更方便管理,也更加直观一点。

新建 docker-compose.yml 文件:

# /docker-compose.yml
version: '3'
services:
  app:
    container_name: blog
    build:
      context: ./
      dockerfile: ./ci/Dockerfile
    ports:
    - "8080:80"
    restart: on-failure

上述文件中指定了 容器名字Dockerfile 以及需要映射到宿主机的哪个 端口 上,可以根据自己的需求自行调整。

构建并运行容器

在项目目录下执行命令 docker-compose up --build -d,然后在浏览器中访问 https://localhost:8080,如果看到博客页面了,部署就大功告成啦。
docker-compose

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值