使用 Docker 搭建你的Wiki(DokuWiki)
本文使用「署名 4.0 國際 (CC BY 4.0)」許可協議,歡迎轉載、或重新修改使用,但需要註明來源。 署名 4.0 國際 (CC BY 4.0)
本文作者: 蘇洋
創建時間: 2019年02月11日 統計字數: 5862字 閱讀時間: 12分鐘閱讀 本文鏈接: https://soulteary.com/2019/02/11/build-your-own-wiki-with-docker-dokuwiki.html
使用 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年開始使用他們的服務到現在,一直沒有什麼大問題。
這裡圖個省事,就不進行鏡像封裝了,想學習封裝的同學可以翻閱之前的文章內容,不放心鏡像的同學,可以圍觀鏡像源代碼地址,進行安全審查: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 已經運行起來了。