基于docker快速搭建dokuwiki
本文使用的是这个mprasil/dokuwiki镜像。操作主要是在威联通的Container station
进行的,但也需要ssh进去手动贴一下儿东西。在一般linux
上干的话,把对应的信息翻译成命令即可。
启动命令
数据目录绑定:
/share/Container/Volumes/Doku/lib/plugins:/dokuwiki/lib/plugins /share/Container/Volumes/Doku/lib/tpl:/dokuwiki/lib/tpl /share/Container/Volumes/Doku/conf:/dokuwiki/conf /share/Container/Volumes/Doku/log:/var/log /share/Container/Volumes/Doku/data:/dokuwiki/data
权限均为读写。/share/Container/Volumes/Doku/
是本机用来存放doku
数据的根目录,目录结构需要事先建好。理论上不要求如此目录结构,只要有这五个目录就好。我这么安排是因为直接把数据导向了原本运行在本机的完整doku
目录树。
网络绑定
内部是80端口,需要转发的话用一般的NAT网络加绑定方法即可。
时区设置
创建Container
的时候需要传一个环境变量:
-e TZ=Asia/Shanghai
如果忘了附加,也可以在创建后手动调整,见下一节。
一些手动调整
软件包
原版镜像甚至没有vim
,省空间倒是真的,但doku
这种搞一次能用几年的东西,也懒得用各种挂载去调参数。启动后用在主机用如下命令:
docker exec -it Doku /bin/bash
即可附加一个bash
环境上去,然后apt update
再装vim
。Doku
是这个Container
的名字。
时区
编辑/startup.sh
文件,在头部()加一行TZ='Asia/Shanghai'; export TZ
:
#!/bin/bash TZ='Asia/Shanghai'; export TZ set -eu set -o pipefail # Updating DokuWiki may need to change files in directories which we hold in # volumes, e.g. `data` or `conf`. Therefore, we need to make sure these files .........
然后关掉再启动,时区应该正常了,但此时docker exec -it Doku /bin/bash
进去的话date
命令输出的时间仍然是伦敦时间。一定要纠正那种“docker==虚拟机”的错觉。
允许的最大附件上传
可以参考多种服务器软件的最大上传附件限制文件汇总里面关于php-cgi
和lighttpd
的部分。
如果要用nginx做反向代理,还需要在反向代理服务器中也设置一遍。
文件和权限问题
由于绑定了volume
,同时container
内部又需要修改权限,可能会造成一些目录的权限会被更改成奇怪的样子,一般不影响运行,但是想从docker
外面删除的时候会有麻烦,需要在主机用sudo
,或者就是进入docker来删除。
需要装插件和主题的话,可以用扩展管理器。扩展管理器抽风的话,插件放到Doku/lib/plugins
,主题放到Doku/lib/plugins/tpl
,注意目录的名字是有要求的,具体什么名字去看你要安装的这个插件或者主题的说明。
这个手动机制也提供了一个挺好的排错方法。比如说由于升级造成某个插件一直报错,可以去Doku/log
看谁在报错,然后删掉对应的目录就是卸载插件了。