使用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.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 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@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 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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器