使用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

openwrt.io

打造這么一個酷炫的博客需要幾步?

只需要兩步,比把大象放進冰箱里還要簡單^_^

第一步:把代碼提交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域名注冊服務

daocloud build-flows newdaocloud build-flows success openwrtio-portaldaocloud runtimes-app

構建的過程為什么這么漫長?

請看這個文件: 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM