说起独立博客的技术演变,从数据库到纯文本放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纯静态博客的更多相关文章

  1. 利用基于Go Lang的Hugo配合nginx来打造属于自己的纯静态博客系统

    Go lang无疑是目前的当红炸子鸡,极大地提高了后端编程的效率,同时有着极高的性能.借助Go语言我们 可以用同步的方式写出高并发的服务端软件,同时,Go语言也是云原生第一语言,Docker,Kube ...

  2. 利用hexo来配合nginx来打造属于自己的纯静态博客系统

    什么是静态网站生成器?顾名思义,就是以最快的速度生成一个高可用的web页面,我们知道Django作为一款非常流行的框架被广泛应用,但是部署起来实在是太麻烦了,各种命令各种配置,动态页面必然要涉及数据库 ...

  3. 用 node.js 的 hexo 框架搭建一个支持 markdown 的静态博客系统

    1,Hexo如何在线可视化写博客:   可以试试这款插件 hexo-admin. 2,马克飞象:   一个非常好的 markdown 编辑器. 3,Hexo博客文章设置密码的方法: 首先,在Hexo中 ...

  4. 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈

    本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...

  5. 使用Markdown编辑器写博客

    使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图 ...

  6. 欢迎使用 Markdown 编辑器写博客

    本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML ...

  7. 使用hexo和coding建立静态博客站点

    背景 由于工作性质的原因,做技术的总想记录和分享一下自己的学习和成长历程,向这世界证明我来过.写文章,发博客,一开始使用51cto,广告太多,看起来让人很痛苦:接着试用了博客园,广告少一些,但感觉还是 ...

  8. 使用Dropbox+Justwriting+Markdown建立个人博客

    使用Dropbox+Justwriting+Markdown建立个人博客,让您真正体会到什么是"简化". 您的博客所有日志存储在您的PC上.即使有一天你的server主机挂了,你的 ...

  9. 第40篇 使用Sublime+MarkDown快速写博客

    原文地址:http://blog.laofu.online/2017/06/03/how-use-sublime/ 前端的开发人员应该都知道sublime的神器,今天就说说如何使用sublime结合m ...

随机推荐

  1. Jquery的基本架构

    引入  以前学习原生JS然后切换到用JQ的时候总觉得很不习惯,甚至有点排斥用JQ.后来自己写项目一直到公司实习用JQ的这段时间,才深深感受到JQ的强大~JQ不仅做到兼容很多浏览器,还能很方便地使用JS ...

  2. 深入理解CSS变形transform(2d)

    × 目录 [1]变形原点 [2]变形函数 [3]多值 前面的话 CSS变形transform是一些效果的集合,主要是移动.旋转.缩放和倾斜这四种基本操作,还可以通过设置matrix矩阵来实现更复杂的效 ...

  3. 信息加密之非对称加密算法RSA

    前面为大家已经总结了,基于密钥交换的DH算法,现在就为大家再介绍一种基于因子分解的RSA算法,这种加密算法有两种实现形式:1.公钥加密,私钥解密:2.私钥加密,公钥解密.下面就为大家分析一下实现代码, ...

  4. Yii的学习(3)--查询生成器 (Query Builder)

    原文地址:http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder 不过原文是英文的,Yii的官网没有翻译这一章,自己就尝 ...

  5. Quartz应用实践入门案例一(基于Web环境)

    Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...

  6. iOS_UIImage_给图片添加水印

    github地址: https://github.com/mancongiOS/UIImage.git UIImage的Category UIImage+ImageWaterPrint.h #impo ...

  7. MAC Objective-C 开发经典书籍推荐

    MAC Objective-C 开发经典书籍推荐 闻道有先后,术业有专攻,这句话放到计算机科学领域的理解可能每个人都会不同. 有些人选择一个操作系统,一个体系的编程语言,作一个领域的开发. 有些人选择 ...

  8. ThreadLocal之我见

    一直都对ThreadLocal类感觉隔层纱似的,因为在开发中几乎是没有用到过,也大体知道他是用来保存一个线程范围内有效的变量.甚至觉着它的实现就是类似于一个map,以线程id作为key,要保存的变量作 ...

  9. 自制简单实用IoC

    IoC是个好东西,但是为了这个功能而使用类似 Castle 这种大型框架的话,感觉还是不大好 代码是之前写的,一直没详细搞,今天整理了一下,感觉挺实用的. IoC定义接口: using System; ...

  10. JS 实现可停顿的垂直滚动

    var ScrollMiddle = { 'Odiv':document.getElementById('comment'), // 目标DOM 'Oli': document.getElementB ...