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 中,感觉还不错,你们有兴趣的话我可以把过程拿出来分享一下
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.