说起独立博客的技术演变,从数据库到纯文本放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.0 -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@163.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 buildRUN 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@163.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.0
MAINTAINER sinkcup <sinkcup@163.com>ADD . /usr/share/nginx/html/portal
RUN cd /usr/share/nginx/html/portal/ && \mkdocs buildRUN 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/

转载于:https://www.cnblogs.com/sink_cup/p/using-coding-daocloud-and-docker-to-build-a-markdown-blog.html

使用coding、daocloud和docker打造markdown纯静态博客相关推荐

  1. Gridea 让你更方便地用 Github Pages 和 Coding Pages 搭建静态博客

    当下大多数人可能已经对 Github Pages 不再陌生,它是很多喜欢写文章的人第一次接触的用于免费搭建博客建一个简洁却又不失优雅的个人博客 ,直到现在互联网上还有大量的基于它的个人博客,也有大量的 ...

  2. Markdown编辑器写博客

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

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

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

  4. Jekyll + Coding Pages 搭建静态博客

    本文转自https://bigballon.github.io/posts/jekyll-github.html,原文是在github上使用jekyll搭建博客,这里用Coding Pages搭建博客 ...

  5. 如何优雅的使用markdown来写博客

    如何优雅的使用markdown来写博客 重构写作方式 学会Markdown基本语法 实践Markdown语法,写出优质文章 文章目录 如何优雅的使用markdown来写博客 一.认识Markdown ...

  6. DayDayUp:Markdown编辑器的简介、入门、使用方法(Markdown编辑器撰写博客)

    DayDayUp:Markdown编辑器的简介.入门.使用方法(Markdown编辑器撰写博客) 目录 Markdown编辑器简介 Markdown编辑器入门 Markdown常用语法 Markdow ...

  7. 使用Markdown编辑器写博客

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

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

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

  9. 在markdown (csdn)博客上输出 右下小标,右上小标。

    在markdown (csdn)博客上输出 右下小标,右上小标. 输入: x<sup>2</sup> 输出: x2 输入: x<sub>2</sub> ...

最新文章

  1. golang 调用c代码
  2. 加载八叉树索引文件_这篇 MySQL 索引和 B+Tree 讲的太通俗易懂!
  3. 【C语言实现反转数组】(用栈实现)51nod - 训练营
  4. java 审计 漏洞函数_Java Web代码审计流程与漏洞函数
  5. idea中使用逆向工程----三部曲
  6. post-commit hook failed (exit code 255) with no output 解决方案
  7. 学校网络安全事故救助机制初探
  8. 损失函数——交叉熵损失函数(引子)
  9. OpenVz Centos4 Oracle 10g VE
  10. koa mysql mongodb_koa如何连接MongoDB
  11. linux dev/zero,/dev/zero是什么意思
  12. mysql 上一周起始时间_mysql 某周的起始和结束日期
  13. Intellij idea使用eclipse的java代码格式化文件
  14. 02-Sentinel-2 L1C级数据bat和Python脚本批量大气校正
  15. 基于realgbs的GB28181接入设备的超低延时web无插件直播
  16. 查看局域网其他电脑的计算机名和IP
  17. 程序人生 - 变脸的原理
  18. [Ubuntu]安裝搜狗輸入法
  19. 学习周报202011004 | 攒一大波分享给大家
  20. checkbox label

热门文章

  1. win 2003 IIS如何防止代码注入
  2. Spring Cloud之Hystrix
  3. MFC命令消息的路由
  4. Android利用android:indeterminateDrawable来实现ProgressBar三种方式
  5. Android Studio之gradle的配置与介绍
  6. 谈谈Activity如何启动的
  7. VC6.0 中的默认操作系统版本的问题
  8. Android Studio你不知道的调试技巧
  9. python add configuration_idea 中add configuration
  10. Android之热修复框架Nuwa