Bard's Gallery

迁移blog到Hyper.sh

Bergwolf TECHHYPERCONTAINER

几年未更的博客坐落在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 :)

In Love with Hyper


Credit: 迁移步骤大量参(chao)考(xi)王旭的博客

Bergwolf
Everyday citizen, A gear