迁移blog到Hyper.sh
几年未更的博客坐落在Google blogger上,经过N天手动html->markdown的切换完成了几乎完全重写的内容迁移,今天博客终于在hyper.sh上线,更一篇纪念一下.
这次迁移我主要有这几方面的诉求:
- 静态博客,由之前的blogger所见即所得编辑,改为由markdown生成,这样对格式把控更精准
- blog内容用github repo管理, 同时host在github.io上, 这点通过github提供的github.io repo实现
- git push的时候blog自动更新, 这点通过Caddy的git addon和github提供的webhook实现
- 博客服务容器化, 向cloud native迈进
简而言之, Ink+github+Caddy+hyper.sh几乎完美的满足了我所有需求.
html->markdown的艰辛过程略去不表, 这里简单记录下hyper.sh上线步骤:
1. 创建blog container image
Dockerfile:
[docker]$cat Dockerfile
FROM ubuntu:xenial
MAINTAINER bergwolf
RUN apt-get update && \
apt-get install -y git wget && \
apt-get clean && \
rm -fr /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
wget -O caddy.tgz "https://caddyserver.com/download/build?os=linux&arch=amd64&features=git" && \
tar xzf caddy.tgz && rm -f caddy.tgz && mv caddy /srv/
COPY entrypoint.sh /
ENTRYPOINT [ "/entrypoint.sh" ]
entrypoint.sh:
[docker]$cat entrypoint.sh
#!/bin/bash
PASSWORD=password
if [ $# -ge 1 ] ; then
if [ "x$1" != "x${1#/}" ] ; then
exec "$@"
fi
PASSWORD=$1
fi
cat > srv/Caddyfile <<-ENDFILE
bergwolf.me {
gzip
root bergwolf.me
git {
repo https://github.com/bergwolf/bergwolf.github.io
hook /update ${PASSWORD}
hook_type github
}
}
ENDFILE
cd srv
./caddy -agree -email bergwolf@gmail.com -host bergwolf.me > /dev/stdout 2>/dev/stderr
创建并push docker image:
$ docker build . -t bergwolf/blog
$ docker push bergwolf/blog
2. 在hyper.sh上运行blog image
创建容器:
$ hyper run -d --restart=always -p 80:80 -p 443:443 --name=myblog bergwolf/blog <webhookpwd>
为容器设置IP:
$ hyper fip allocate 1
<IP>
$ hyper fip attach <IP> myblog
3. 还有么?没有啦!
刨去html->markdown的艰辛,这次迁移的其他部分让我都觉得赏心悦目,难怪最近老有用户说爱上hyper :)
Credit: 迁移步骤大量参(chao)考(xi)王旭的博客