正如OP所建议的,您需要创建一个包装官方MediaWiki图像的图像。
编写说明以生成具有额外扩展名的图像
作为一个简单的示例,我们将创建一个包含
EmbedVideo
扩展,自1.31版起,该扩展未与MediaWiki捆绑。在文件中添加以下说明
my-mediawiki/Dockerfile
:
FROM mediawiki:latest
RUN git clone --depth 1 https://github.com/HydraWiki/mediawiki-embedvideo.git /var/www/html/extensions/EmbedVideo
构建图像
使用将此Dockerfile转换为图像
docker build
:
$ docker build -t username/mediawiki ./my-mediawiki
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM mediawiki:latest
latest: Pulling from library/mediawiki
802b00ed6f79: Pull complete
# [lines omitted]
8b47ece631d8: Pull complete
Digest: sha256:5922653b254073c6d6a535bbdb0101f8a5eadbf557e2f31d590c234001c55b60
Status: Downloaded newer image for mediawiki:latest
---> 27fe73856ca7
Step 2/2 : RUN git clone --depth 1 https://github.com/HydraWiki/mediawiki-embedvideo.git /var/www/html/extensions/EmbedVideo
---> Running in 30a411511341
Cloning into '/var/www/html/extensions/EmbedVideo'...
Removing intermediate container 30a411511341
---> 5b297228bb08
Successfully built 5b297228bb08
Successfully tagged username/mediawiki:latest
测试图像
使用测试图像
docker run
:
$ docker run --rm -p 8080:80 username/mediawiki
此容器运行时,请访问
localhost:8080
使用web浏览器。系统将要求您执行设置程序。当您进入选项页面时,EmbeddeVideo扩展将包含在扩展列表中。
执行其余设置
要在docker中运行MediaWiki,还需要其他步骤,例如提供
LocalSettings.php
文件并将其连接到数据库。遵循
official MediaWiki Docker documentation
对于这些步骤,请替换
username/mediawiki
官方形象
mediawiki
形象
添加其他插件
通过附加更多插件,可以安装多个插件
RUN
结束说明
我的mediawiki/Dockerfile
。例如,要添加
Scribunto
,将以下内容附加到文件底部:
RUN git clone --depth 1 -b $MEDIAWIKI_BRANCH \
https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Scribunto \
/var/www/html/extensions/Scribunto \
&& chmod a+x /var/www/html/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua*_linux_*/lua
修改后
Dockerfile
使用以下内容更新图像:
docker build -t username/mediawiki ./my-mediawiki
大多数扩展都需要您修改
本地设置。php
,并且像Scribunto一样,有些需要在下载后运行额外的安装命令(检查每个扩展的
README
)。复杂的扩展,如
VisualEditor
将需要其他容器来运行Parsoid之类的守护程序。我自己的
Dockerfile
和
docker-compose.yml
说明如何配置其他插件。