xD 众所周知,大部分 docker 服务提供商诸如 hyper.sh 还有网易蜂巢之类的,都是按容器的大小和数量计费的,因此虽然 docker 官方给的最佳实践是“每个容器只包含一个程序”,但实际上你一个一万年都不会有人访问的博客服务,当然是能省则省,这个脚本就是出于这个目的来设计的我虽然没有挑战 64mb VPS 那种想法,但是这个脚本构建出来的内存还真的不需要 64mb ,因为不通过 git deployer 提交内容的时候,常态化运行的只有这三个:
-
nginx - 提供静态网页服务
-
ssh - 通过 git 提交时会用到
-
hypervisor - docker 启动时自动启动两个程序,在 ssh 和 nginx 挂掉的时候自动重开,在更新 nginx 设置后提供 hypervisorctl restart nginx 的动作
我在 hyper.sh 上试了一下,这个镜像的内存占用只有 59mb ,如果把 openssh 换成 dropbear ,把 bash 换成其他莫名其妙的 sh ,把 nginx 换成 lighttpd ,内存占用会更少当然我更加建议你在 hyper.sh 上最少使用 128M 的容器为好, 64M 一个月和 128M 一个月也就差了 0.5 刀,总不至于连这点钱都出不起,哈哈。
地址在这里: https://github.com/cnnblike/hexo-server-all-in-one
构建方法: 把自己的 blog.pub (公钥)放到目录下,然后docker build -t test:v1 .
部署方法自行参照自己的 docker 服务提供商。
如何向这个 docker 灌注内容呢?
你需要两个 repo ,一个 repo 是 content-repo ,一个 repo 是 config-repo 。
content-repo 的信息如下: ssh://root@<your domain="">/var/repo/blog.git ,其中的内容会通过 post-hook 自动复制到 /var/www/html/中,复制后 nginx 会自动重启
config-repo 的信息如下: ssh://root@<your domain="">/var/repo/config.git ,其中的内容会通过 post-hook 自动复制到 /etc/nginx/中,复制后 nginx 会自动重启
事实上,我已经通过自 host 的 gogs 和 jenkins 搭起了一个全自动部署的服务,这样子就可以达到我在 gogs 的网页上修改了后台的 md 文件,会自动推送到 jenkins 服务器进行 hexo g 然后 hexo d 到这个展示的静态 docker 中,感觉还不错,你们有兴趣的话我可以把过程拿出来分享一下

