使用 Docker 搭建你的Wiki(DokuWiki)
前面介紹了三款不同的 RSS 系統的快速搭建使用,接下來我將演示幾種不同的 Wiki 系統,同樣是藉助 Docker 和 Traefik 進行快速搭建,本篇是第四篇,DokuWiki。
如果你有閱讀過我之前寫的文章,那麼參考本篇文章將文章搭建起來,應該只需要3分鐘或者更少,如果你沒有看過,那麼可以點選本文相關的文章標籤,閱讀過往的文章。
關於 DokuWiki
DokuWiki 同樣是一款開源並且支援免費使用的軟體,由 PHP 編寫,第一個提交版本在2004年,作為開源產品已經被穩定迭代了15個年頭,同樣天生跨平臺,並被廣泛使用在各種知識社群內,尤其適合中小團隊和個人作為知識整理軟體使用。
記得第一份工作,在新浪雲團隊的時候,內部的 Wiki 便是基於 Doku 搭建的。
DokuWiki 和前面介紹的 MoinMoin 很類似,預設使用純文字作為資料記錄的方式,所以佔用伺服器資源很低。
官方目前還在迭代,不過因為維護時間很長,迭代頻率相對比較慢,距離當下最新的版本是 2018年4月22日 ,本文基於此版本進行撰寫,感興趣的同學可以圍觀: 官方專案倉庫 。
話不多說,開始實戰。
使用 Compose 執行 DokuWiki
DokuWiki 同樣沒有提供官方容器映象,但是在 DockerHub 搜尋的時候發現,Bitnami 有封裝好的映象 bitnami/dokuwiki
,我個人比較信任這個團隊,從2013年開始使用他們的服務到現在,一直沒有什麼大問題。
這裡圖個省事,就不進行映象封裝了,想學習封裝的同學可以翻閱之前的文章內容,不放心映象的同學,可以圍觀映象原始碼地址,進行安全審查: https://github.com/bitnami/bitnami-docker-dokuwiki
配合下面的配置檔案,使用 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