本文使用「署名 4.0 國際 (CC BY 4.0)」許可協議,歡迎轉載、或從新修改使用,但須要註明來源。 署名 4.0 國際 (CC BY 4.0)html
本文做者: 蘇洋node
建立時間: 2019年02月03日 統計字數: 4384字 閱讀時間: 9分鐘閱讀 本文連接: soulteary.com/2019/02/03/…git
前面介紹了三款不一樣的 RSS 系統的快速搭建使用,接下來我將演示幾種不一樣的 Wiki 系統,一樣是藉助 Docker 和 Traefik 進行快速搭建,本篇是第三篇,TiddlyWiki,除了講述搭建以外,簡單演示如何優化你的容器鏡像。github
若是你有閱讀過我以前寫的文章,那麼參考本篇文章將文章搭建起來,應該只須要3分鐘或者更少,若是你沒有看過,那麼能夠點擊本文相關的文章標籤,閱讀過往的文章。web
TiddlyWiki 一樣是一款開源而且支持無償使用的軟件,由JavaScript編寫,一樣天生跨平臺,被普遍用於我的知識整理。docker
做者來自牛津大學,開發這個Wiki軟件許多年,憑藉軟件的一些獨特的優點,所以有了很多鐵粉,那麼這款軟件有什麼不一樣於其餘Wiki軟件的特色呢?npm
下面是軟件的官方站點,以及對應的中文漢化版本。漢化版本軟件版本比較低,不過常見功能使用沒有太大變化。編程
本文將使用 Node.js 模式進行 Wiki 站點的建設,一來性能更好,二來可讓整個應用變爲同構類型,二次開發效率也更高,三來,單文件版本應該不須要一篇實踐文檔。瀏覽器
軟件目前版本是 v5.1.19 ,自 2013年版本號從 1.x 跳躍到 5.0 後,做者已經開發了6個年頭,版本記錄見此,本文基於該穩定版本撰寫。bash
話很少說,開始實戰。
下面是咱們的 Dockerfile :
FROM node:11.9.0-alpine
RUN npm install -g tiddlywiki@5.1.19
EXPOSE 8080
VOLUME [ "/app" ]
WORKDIR /app
CMD [ "tiddlywiki", ".", "--listen", "host=0.0.0.0" ]
複製代碼
使用 Docker build
命令構建鏡像,這裏咱們暫定鏡像名稱爲 docker.lab.com/tiddlywiki:5.1.19
。
docker build -t docker.lab.com/tiddlywiki:5.1.19 .
複製代碼
若是你在構建過程當中以爲很慢,可使用國內淘寶團隊維護的鏡像,將第一條 RUN
指令後的命令替換爲:
RUN npm install -g tiddlywiki@5.1.19 --registry=https://registry.npm.taobao.org
複製代碼
配合下面的配置文件,使用 Compose 能夠一鍵啓動一個使用 文本文件 做爲數據儲存的 TiddlyWiki ,配置很簡單,20行代碼左右。
version: '3'
services:
tiddly:
image: docker.lab.com/tiddlywiki:5.1.19
restart: always
labels:
- "traefik.enable=true"
- "traefik.port=8080"
- "traefik.frontend.rule=Host:tiddlywiki.lab.io"
- "traefik.frontend.entryPoints=https,http"
- "traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*"
networks:
- traefik
volumes:
- ./app:/app
expose:
- 8080
command: tiddlywiki . --init server
networks:
traefik:
external: true
複製代碼
不過若是直接使用這樣的配置和容器鏡像,使用起來會有一些小麻煩,咱們須要執行「兩次」 docker-compose up
:
command
指令後的內容,讓容器鏡像以默認命令執行,啓動服務。做爲一個有追求的折騰控,咱們固然要避免這樣的狀況,太不環保了。
那麼咱們來解決這個問題吧。
下面是新的 Dockerfile :
FROM node:11.9.0-alpine
MAINTAINER soulteary@gmail.com
RUN npm install -g tiddlywiki@5.1.19
EXPOSE 8080
VOLUME [ "/app" ]
WORKDIR /app
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
CMD [ "/entrypoint.sh" ]
複製代碼
與以前的版本相比,咱們將提供一個新的「入口文件」,entrypoint.sh
文件內容以下:
#!/usr/bin/env sh
if [ ! -f "/app/tiddlywiki.info" ]; then
tiddlywiki /app --init server
fi
tiddlywiki /app --listen host=0.0.0.0
複製代碼
從新使用 docker build
命令構建鏡像以後,咱們來修正以前的 docker-compose.yml
配置文件。
version: '3'
services:
tiddly:
image: docker.lab.com/tiddlywiki:5.1.19
restart: always
labels:
- "traefik.enable=true"
- "traefik.port=8080"
- "traefik.frontend.rule=Host:tiddlywiki.lab.io"
- "traefik.frontend.entryPoints=https,http"
- "traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*"
networks:
- traefik
volumes:
- ./app:/app
expose:
- 8080
networks:
traefik:
external: true
複製代碼
將配置保存爲 docker-compose.yml
,而後執行 docker-compose up
啓動應用,在配置文件同級目錄將會自動建立一個名爲 app
的目錄,其中將保存站點的配置文件,以及咱們將來全部的 Wiki 條目數據,一切都是全自動的。
數據目錄結構以下:
app
├── tiddlers
│ ├── $__SiteTitle.tid
│ └── $__StoryList.tid
└── tiddlywiki.info
複製代碼
數據備份很簡單,只須要按期對該目錄進行文件備份便可,若是後面有機會,或許能夠寫一篇專門用於文件備份的文章。
當使用 docker-compose up
將應用啓動以後,即可以經過咱們配置的域名進行訪問了,本例中地址爲 tiddlywiki.lab.io
。(我使用 Traefik 提供服務發現,若是你不會操做,請訪問個人歷史文章,瞭解 Traefik 如何使用。)
打開瀏覽器,能夠看到 TiddlyWiki 已經運行起來了。
點擊右側的「齒輪」能夠進入設置頁面,除了常規操做以外,還可以配置插件、語言包、主題等。
接下來咱們以配置 TiddlyWiki 爲中文爲例,打開設置面板的插件標籤頁,點擊開插件後,選擇語言包分類,找到中文語言包後,點擊「安裝」按鈕。
下載完畢以後,頁面頂部會多出一條黃色的提示,依次點擊提示條中的「保存」和「刷新」按鈕。
而後回到配置面板的首頁,向下滾動頁面,找到語言配置項,選擇中文,稍等 一、2秒後,語言包便配置生效了。
其餘插件的下載配置也相似,回到首頁,咱們能夠看到界面右側的工具欄已經變成中文。
而文章內容使用什麼語言書寫,便會顯示什麼內容,若是你想作多語言站點,能夠摸索一下,TiddlyWiki 一樣支持。
接下來即可以開始正式編寫Wiki之旅了,點擊工具欄齒輪旁邊的「+」號,能夠建立新文章,而點擊頁面中已存在內容的鋼筆圖標,則能夠對已存在的內容進行修改。
更多內容你們能夠自行探索。
若是你對本文聊到的 Docker 、Traefik 、Compose 還不是很熟悉,歡迎閱讀個人以往文章,補全對上述技術的認識,但願個人文章能夠對你有幫助。
接下來我會繼續介紹幾種不一樣的 Wiki 系統的安裝配置、魔改,若是你也在考慮如何維護一套讓本身用起來舒服的知識管理工具,能夠繼續關注,下回再見。
— EOF
我如今有一個小小的折騰羣,裏面彙集了一些喜歡折騰的小夥伴。
在不發廣告的狀況下,咱們在裏面會一塊兒聊聊軟件、HomeLab、編程上的一些問題,也會在羣裏不按期的分享一些技術沙龍的資料。
喜歡折騰的小夥伴歡迎掃碼添加好友。(請註明來源和目的,不然不會經過審覈)