本文使用「署名 4.0 國際 (CC BY 4.0)」許可協議,歡迎轉載、或重新修改使用,但需要註明來源。 署名 4.0 國際 (CC BY 4.0)

本文作者: 蘇洋

創建時間: 2019年02月11日 統計字數: 5862字 閱讀時間: 12分鐘閱讀 本文鏈接: soulteary.com/2019/02/1


使用 Docker 搭建你的Wiki(DokuWiki)

前面介紹了三款不同的 RSS 系統的快速搭建使用,接下來我將演示幾種不同的 Wiki 系統,同樣是藉助 Docker 和 Traefik 進行快速搭建,本篇是第四篇,DokuWiki。

如果你有閱讀過我之前寫的文章,那麼參考本篇文章將文章搭建起來,應該只需要3分鐘或者更少,如果你沒有看過,那麼可以點擊本文相關的文章標籤,閱讀過往的文章。

關於 DokuWiki

DokuWiki 同樣是一款開源並且支持免費使用的軟體,由 PHP 編寫,第一個提交版本在2004年,作為開源產品已經被穩定迭代了15個年頭 ^1,同樣天生跨平台,並被廣泛使用在各種知識社區內,尤其適合中小團隊和個人作為知識整理軟體使用。

記得第一份工作,在新浪雲團隊的時候,內部的 Wiki 便是基於 Doku 搭建的。

DokuWiki 和前面介紹的 MoinMoin 很類似,默認使用純文本作為數據記錄的方式,所以佔用伺服器資源很低。

官方目前還在迭代,不過因為維護時間很長,迭代頻率相對比較慢,距離當下最新的版本是 2018年4月22日 ,本文基於此版本進行撰寫,感興趣的同學可以圍觀:官方項目倉庫。

話不多說,開始實戰。

使用 Compose 運行 DokuWiki

DokuWiki 同樣沒有提供官方容器鏡像,但是在 DockerHub 搜索的時候發現,Bitnami 有封裝好的鏡像 bitnami/dokuwiki ,我個人比較信任這個團隊,從2013年開始使用他們的服務到現在,一直沒有什麼大問題。

這裡圖個省事,就不進行鏡像封裝了,想學習封裝的同學可以翻閱之前的文章內容,不放心鏡像的同學,可以圍觀鏡像源代碼地址,進行安全審查:github.com/bitnami/bitn

配合下面的配置文件,使用 Compose 可以一鍵啟動一個使用 文本文件 作為數據儲存的 DokuWiki ,配置很簡單,30 行代碼左右。

version: 3

services:

dokuwiki:
container_name: doku.lab.io
restart: always
image: bitnami/dokuwiki:0.20180422.201901061035-r12
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:doku.lab.io"
- "traefik.frontend.passHostHeader=true"
- "traefik.frontend.entryPoints=https,http"
- "traefik.frontend.headers.SSLRedirect=true"
- "traefik.frontend.headers.STSSeconds=315360000"
- "traefik.frontend.headers.frameDeny=true"
- "traefik.frontend.headers.SSLProxyHeaders=X-Forwarded-Proto:https"
- "traefik.frontend.redirect.regex=^https?://doku.lab.io/(.*)"
- "traefik.frontend.redirect.replacement=https://doku.lab.io/$${1}"
- "traefik.frontend.headers.customResponseHeaders=Access-Control-Allow-Origin:*"
environment:
- DOKUWIKI_FULL_NAME=soulteary
- [email protected]
- DOKUWIKI_WIKI_NAME=Wiki
- DOKUWIKI_USERNAME=soulteary
- DOKUWIKI_PASSWORD=soulteary
networks:
- traefik
expose:
- 80
volumes:
- ./data:/bitnami

networks:
traefik:
external: true

和之前不同的是,這裡演示了如何使用 Docker Label 定義 Traefik 的一些額外能力,比如自動掛載 ssl/tls 證書,域名重定向。

當使用 docker-compose up 將應用啟動之後,你會看到下面的日誌,耐心等待 dokuwiki successfully initialized 出現在日誌中,之後便可以通過我們配置的域名進行訪問了,本例中地址為 doku.lab.io 。(我使用 Traefik 提供服務發現,如果你不會操作,請訪問我的歷史文章,了解 Traefik 如何使用。)

Creating doku.lab.io ... done
Attaching to doku.lab.io
doku.lab.io |
doku.lab.io | Welcome to the Bitnami dokuwiki container
doku.lab.io | Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-dokuwiki
doku.lab.io | Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-dokuwiki/issues
doku.lab.io |
doku.lab.io | nami INFO Initializing apache
doku.lab.io | apache INFO ==> Patching httpoxy...
doku.lab.io | apache INFO ==> Configuring dummy certificates...
doku.lab.io | nami INFO apache successfully initialized
doku.lab.io | nami INFO Initializing php
doku.lab.io | nami INFO php successfully initialized
doku.lab.io | nami INFO Initializing libphp
doku.lab.io | nami INFO libphp successfully initialized
doku.lab.io | nami INFO Initializing dokuwiki
doku.lab.io | dokuwik INFO Passing wizard, please be patient
doku.lab.io | dokuwik INFO
doku.lab.io | dokuwik INFO ########################################################################
doku.lab.io | dokuwik INFO Installation parameters for dokuwiki:
doku.lab.io | dokuwik INFO username: soulteary
doku.lab.io | dokuwik INFO user fullname: soulteary
doku.lab.io | dokuwik INFO Password: **********
doku.lab.io | dokuwik INFO Email: [email protected]
doku.lab.io | dokuwik INFO Wiki Name: Wiki
doku.lab.io | dokuwik INFO (Passwords are not shown for security reasons)
doku.lab.io | dokuwik INFO ########################################################################
doku.lab.io | dokuwik INFO
doku.lab.io | nami INFO dokuwiki successfully initialized
doku.lab.io | INFO ==> Starting dokuwiki...
doku.lab.io | [Mon Feb 11 09:11:14.374658 2019] [ssl:warn] [pid 101] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
doku.lab.io | [Mon Feb 11 09:11:14.381884 2019] [ssl:warn] [pid 101] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
doku.lab.io | [Mon Feb 11 09:11:14.447186 2019] [ssl:warn] [pid 101] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
doku.lab.io | [Mon Feb 11 09:11:14.455003 2019] [ssl:warn] [pid 101] AH01909: localhost:443:0 server certificate does NOT include an ID which matches the server name
doku.lab.io | [Mon Feb 11 09:11:14.494463 2019] [mpm_prefork:notice] [pid 101] AH00163: Apache/2.4.37 (Unix) OpenSSL/1.1.0j PHP/7.1.26 configured -- resuming normal operations
doku.lab.io | [Mon Feb 11 09:11:14.494539 2019] [core:notice] [pid 101] AH00094: Command line: httpd -f /bitnami/apache/conf/httpd.conf -D FOREGROUND

在展示程序界面和常規操作之前,我們還是先說一下數據存放地址,以及未來插件要在哪裡進行存放和應用。

在上面的配置文件 docker-compose.yml 的同級目錄會自動生成 data 目錄,在目錄內會包含用戶數據、環境配置相關的內容,如下所示:

data
├── apache
│ └── conf
├── dokuwiki
│ ├── conf
│ ├── data
│ └── lib
│ ├── images
│ ├── plugins
│ └── tpl
└── php
└── conf

如果你需要應用官方市場的插件或者主題,請放置於 data/dokuwiki/lib/plugin/ 目錄內的指定文件夾中,和 MoinMoin 不同的是,不需要重啟容器進行,直接刷新瀏覽器頁面,插件就能夠自動載入了。

我們的 Wiki 條目數據會被存放在 data/dokuwiki/data 中,所以請定期對該位置數據進行備份保存。

DokuWiki 的常規操作

打開瀏覽器,可以看到 DokuWiki 已經運行起來了。

在當前頁面右側可以看到編輯菜單,點擊後可以進入編輯界面。

默認不使用插件,語法需要使用特殊語法 官方語法參考。

點擊保存,第一條 Wiki 條目的更新操作就完成了。

再次點擊條目中的信息鏈接,可以直觀的查看到內容的變更記錄,並執行不同版本的對比,獲取更多的信息。

至於安裝插件、配置主題等,可以點擊頂部菜單欄 Admin,比較直觀就不贅述了。

其他

如果你想要對鏈接進行優化,可以參考這裡 Pull Request 修改 data 目錄中的 Apache 配置文件即可。

最後

如果你對本文聊到的 Docker 、Traefik 、Compose 還不是很熟悉,歡迎閱讀我的以往文章,補全對上述技術的認識,希望我的文章可以對你有幫助。

接下來我會繼續介紹幾種不同的 Wiki 系統的安裝配置、魔改,如果你也在考慮如何維護一套讓自己用起來舒服的知識管理工具,可以繼續關注,下回再見。

— EOF


我現在有一個小小的折騰群,裡面聚集了一些喜歡折騰的小夥伴。

在不發廣告的情況下,我們在裡面會一起聊聊軟體、HomeLab、編程上的一些問題,也會在群里不定期的分享一些技術沙龍的資料。

喜歡折騰的小夥伴歡迎掃碼添加好友。(請註明來源和目的,否則不會通過審核)

蘇洋:關於折騰群入群的那些事?

zhuanlan.zhihu.com
圖標

推薦閱讀:
相关文章