使用coding、daocloud和docker打造markdown纯静态博客
说起独立博客的技术演变,从数据库到纯文本放git是一大进步,从HTML到markdown又是一大进步。
解析技术有没有进步呢?既然markdown是纯文本了,再用PHP/Python/Ruby去实时解析,多么多此一举啊(比如github用的Jekyll),还需要配置服务器环境。如果用shell把markdown转换成HTML,生成纯静态博客多么愉快,无需服务器,直接放到云存储CDN上,飞快!
先看疗效!openwrt.io就是这么一个纯静态网站,网址:http://openwrt.io/,代码在coding上:https://coding.net/u/openwrtio/p/portal/git。

打造这么一个酷炫的博客需要几步?
只需要两步,比把大象放进冰箱里还要简单^_^
第一步:把代码提交coding
注册登录 coding.net,fork或创建一个项目,比如blog,代码:https://coding.net/u/openwrtio/p/portal/git/tree/1.0.0/,修改其中的docs/index.md即为博客首页,然后提交,打tag(比如0.1.0),push。指令如下:
git clone xxx
cd xxx
wget -O blog.zip https://coding.net/u/openwrtio/p/portal/git/archive/1.0.0
unzip blog.zip
rm blog.zip
echo "Hello! 树先生" > docs/index.md
git add .
git commit -m 'first commit'
git push origin master
git tag -a 0.1. -m 'first commit'
git push --tags
第二步:使用daocloud自动构建和部署
打开daocloud.io,创建一个项目,“设置代码源”为刚才提交coding的项目即可,将触发自动构建。等待构建完成,即生成了一个debian系统镜像,点“查看镜像”——》“部署”——》“基础设置”——》“立即部署”,即可。daocloud会赠送一个子域名,访问即可看到博客已经跑起来了。建议购买一个自己的域名,CNAME绑定即可,比如dnspod域名注册服务。



构建的过程为什么这么漫长?
请看这个文件: https://coding.net/u/openwrtio/p/portal/git/blob/1.0.0/Dockerfile
FROM nginx
MAINTAINER sinkcup <sinkcup@.com> RUN apt-get update -qq
RUN apt-get upgrade -y
RUN apt-get install -y python-pip
RUN pip install mkdocs
RUN mkdir -p /usr/share/nginx/html/portal
ADD . /usr/share/nginx/html/portal/
RUN cd /usr/share/nginx/html/portal/ && \
mkdocs build
RUN rm -f /etc/nginx/conf.d/*
ADD nginx/conf.d /etc/nginx/conf.d/
可以看到每次构建都需要apt-get升级、安装环境、安装mkdocs,最后用mkdocs生成HTML。前面几个步骤每次都一样,那就想办法重用即可。
把Dockerfile改成两个,一个是每次都不变的服务器环境:
FROM nginx
MAINTAINER sinkcup <sinkcup@.com> RUN apt-get update -qq
RUN apt-get upgrade -y
RUN apt-get install -y python-pip
RUN pip install mkdocs
RUN cd /usr/share/nginx/html/ && \
mkdocs new demo
RUN cd /usr/share/nginx/html/demo && \
mkdocs build
RUN rm -f /etc/nginx/conf.d/*
ADD nginx/conf.d /etc/nginx/conf.d/
我把它提交到了github(https://github.com/sinkcup/docker-library-nginx-mkdocs),然后注册登录docker.com,创建一个项目,选择来自github的代码(https://registry.hub.docker.com/u/sinkcup/nginx-mkdocs/),构建成功,生成的镜像是 sinkcup/nginx-mkdocs:0.1.0。
daocloud的Dockerfile里直接使用这个docker镜像即可,从此构建飞快!代码如下:
FROM sinkcup/nginx-mkdocs:0.1.
MAINTAINER sinkcup <sinkcup@.com> ADD . /usr/share/nginx/html/portal
RUN cd /usr/share/nginx/html/portal/ && \
mkdocs build
RUN rm -f /etc/nginx/conf.d/*
ADD nginx/conf.d /etc/nginx/conf.d/
完整代码在 https://coding.net/u/openwrtio/p/portal/git/tree/1.1.0/,这是一个开源项目,欢迎fork一起协作。
mkdocs文档在:http://www.mkdocs.org/
使用coding、daocloud和docker打造markdown纯静态博客的更多相关文章
- 利用基于Go Lang的Hugo配合nginx来打造属于自己的纯静态博客系统
Go lang无疑是目前的当红炸子鸡,极大地提高了后端编程的效率,同时有着极高的性能.借助Go语言我们 可以用同步的方式写出高并发的服务端软件,同时,Go语言也是云原生第一语言,Docker,Kube ...
- 利用hexo来配合nginx来打造属于自己的纯静态博客系统
什么是静态网站生成器?顾名思义,就是以最快的速度生成一个高可用的web页面,我们知道Django作为一款非常流行的框架被广泛应用,但是部署起来实在是太麻烦了,各种命令各种配置,动态页面必然要涉及数据库 ...
- 用 node.js 的 hexo 框架搭建一个支持 markdown 的静态博客系统
1,Hexo如何在线可视化写博客: 可以试试这款插件 hexo-admin. 2,马克飞象: 一个非常好的 markdown 编辑器. 3,Hexo博客文章设置密码的方法: 首先,在Hexo中 ...
- 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈
本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...
- 使用Markdown编辑器写博客
使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图 ...
- 欢迎使用 Markdown 编辑器写博客
本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML ...
- 使用hexo和coding建立静态博客站点
背景 由于工作性质的原因,做技术的总想记录和分享一下自己的学习和成长历程,向这世界证明我来过.写文章,发博客,一开始使用51cto,广告太多,看起来让人很痛苦:接着试用了博客园,广告少一些,但感觉还是 ...
- 使用Dropbox+Justwriting+Markdown建立个人博客
使用Dropbox+Justwriting+Markdown建立个人博客,让您真正体会到什么是"简化". 您的博客所有日志存储在您的PC上.即使有一天你的server主机挂了,你的 ...
- 第40篇 使用Sublime+MarkDown快速写博客
原文地址:http://blog.laofu.online/2017/06/03/how-use-sublime/ 前端的开发人员应该都知道sublime的神器,今天就说说如何使用sublime结合m ...
随机推荐
- jQuery贪吃蛇--jQuery学习
我用JQuery有一段时间了,越来越体会到其强大之处,于是自己尝试写了一个贪吃蛇小游戏,拿来与网友分享一下. 1. 了解JQuery.Timers 除用到了jQuery1.5.1之外,我还用到了jQu ...
- Java编程思想(Chapter2、4、6)
一切皆对象 用引用操纵对象 Java中操纵的标识符实际上是对象的“引用”.例如想要操纵一个字符串,则可以创建一个String引用. String s; 此处s只是一个引用. 存储位置 基本类型/对象的 ...
- [转]Linux df 命令不更新磁盘数据空间使用情况的解决办法
当你已经找出并remove掉Linux系统中的大容量文件时,然后使用df -h查看使用情况依旧不变时.可尝试如下方法解决 1.找出那个进程占用了哪些已删除的文件 # 查看哪些被文件还在被哪个进程占用 ...
- Codrops 优秀教程:CSS 3D Transforms 实现书本效果
这个使用 CSS 3D Transforms 实现创意书本效果的来自 Codrops 网站.你可以看到两种类型的书设计:精装书和平装书.这两个效果都可以很容易地使用 CSS 修改.赶紧体验一下吧. ...
- html/css基础篇——link和@inport详解以及脚本执行顺序探讨
先说一说两者之间的异同 两者都可以引用外部CSS的方式,现在主流浏览器两者都支持(ps:@import是CSS2.1提出的),但是存在一定的区别: 1.link是XHTML标签,除了加载CSS外,还可 ...
- CSS易混淆知识点总结与分享-定位与布局
CSS定位有四种模式:static.relative.absolute.fixed,其它static是默认值,下面分别讲解下各自的特点: static:静态定位,处于动态布局流中,按照页面中的各元素先 ...
- BZOJ1179 Atm //缩点+spfa
1179: [Apio2009]Atm Description Input 第一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的 ...
- javascript 入门——this属性的理解!
JavaScript中函数的this对象是函数在执行时所处的作用域(例:当在网页的全局作用域中调用函数时,this对象引用的就是window). 例: window.color = "red ...
- 用Qt写软件系列五:一个安全防护软件的制作(3)
引言 上一篇中讲述了工具箱的添加.通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写.本文在前面的基础上实现窗体分割效果.堆栈式窗口以及Tab选项卡. 窗体分割 窗体分割是 ...
- DedeCMS学习
也许有些读者并不了解dedecms,这里简单介绍一下:DedeCMS是一个自由和开放源码的内容管理系统,它是一个可以独立使用的内容发布系统(CMS).织梦内容管理系统(DedeCms) 以简单.实用. ...