使⽤docker快速部署hexo博客
是⼀款静态博客⼯具,不涉及到任何后端、数据库啥的。
也就是说不管过程中怎么乱七⼋糟的捣⿎,最终其实在部署的时候需要使⽤的,其实就是⼀堆前端静态资源,html、js、css 、jpg 等等,也就是使⽤ hexo g 命令⽣成出来的 public ⽂件夹中所包含的部分。
那么通常来讲,对于没有个⼈服务器的同学来说,⼀般是使⽤ github page 的功能来将静态页⾯托管到 github 上,但是由于国内 github 速度感⼈,使⽤起来并不是那么顺畅。
如果有个⼈服务器的话,我们可以使⽤ nginx 作为静态资源服务器,来快速部署我们的博客。
下⾯将介绍如何利⽤ docker 的 nginx 镜像来快速部署博客。
⼀、服务器安装 docker 环境
1. 安装 docker
参考:
2. 安装 docker-compose
docker-compose 并不是必须使⽤的,这⾥是为了更⽅便的管理我们的容器。
macos 下安装 docker 时⾃动就安装了 docker-compose,linux 则需要使⽤下⾯的命令⼿动安装⼀下。
$ curl -L github/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 即可⽣成⼀个最简单的博客项⽬了。
三、添加 Dockerfile ⽂件
这⾥需要理清楚思路的⼀点是,整个部署流程我们分为两个阶段,第⼀个阶段是⽣成静态⽂件,也就是使⽤ hexo g 命令⽣成 public ⽂件夹,此过程依赖 nodejs 环境,⽽第⼆个阶段则是启动 nginx。
两个阶段我们会使⽤ dockerfile 的多阶段构建来实现,第⼀个阶段的 nodejs 容器中⽣成的 public ⽂件夹会被拷贝到第⼆个阶段的 nginx
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,如果没有后期进⼊容器的需求,可以删除这⼀⾏,提⾼构建时的速度。
三、添加 l ⽂件
其实不使⽤ docker-compose,直接 docker run 也是可以的,但是使⽤ docker-compose 更⽅便管理,也更加直观⼀点。
新建 l ⽂件:
# /l
version: '3'
services:
app:
container_name: blog
build:
context: ./
dockerfile: ./ci/Dockerfile
ports:
- "8080:80"
restart: on-failure
上述⽂件中指定了 容器名字、Dockerfile 以及需要映射到宿主机的哪个 端⼝ 上,可以根据⾃⼰的需求⾃⾏调整。构建并运⾏容器
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论