基于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再装vimDoku是这个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-cgilighttpd的部分。

如果要用nginx做反向代理,还需要在反向代理服务器中也设置一遍。

由于绑定了volume,同时container内部又需要修改权限,可能会造成一些目录的权限会被更改成奇怪的样子,一般不影响运行,但是想从docker外面删除的时候会有麻烦,需要在主机用sudo,或者就是进入docker来删除。

需要装插件和主题的话,可以用扩展管理器。扩展管理器抽风的话,插件放到Doku/lib/plugins,主题放到Doku/lib/plugins/tpl,注意目录的名字是有要求的,具体什么名字去看你要安装的这个插件或者主题的说明。

这个手动机制也提供了一个挺好的排错方法。比如说由于升级造成某个插件一直报错,可以去Doku/log看谁在报错,然后删掉对应的目录就是卸载插件了。

  • 最后更改: 2022/01/13 09:57