我们正在使用官方 MediaWiki Docker 映像,并希望能够添加其他 MediaWiki 扩展。
问题:
LocalSettings.php
?
mediawiki:
image: mediawiki
container_name: mediawiki_production
mem_limit: 4g
volumes:
- /var/www/mediawiki/uploads:/var/www/html/uploads
- /var/www/mediawiki/LocalSettings.php:/var/www/html/LocalSettings.php
environment:
- MEDIAWIKI_DB_NAME=
- MEDIAWIKI_DB_HOST=
- MEDIAWIKI_DB_USER=
- MEDIAWIKI_DB_PASSWORD=
- VIRTUAL_HOST=wiki.exmaple.com
- TERM=xterm
restart: always
network_mode: bridge
我们正在考虑的扩展首先不属于官方映像(但希望以后有更多可扩展的解决方案):
使用官方 mediawiki 镜像作为其“FROM”以包含 mediawiki 扩展和更新的 docker-compose(如果两者都需要)以能够添加 mediawiki 扩展的下游 docker 镜像的任何示例都会有所帮助。也许最好解释一下,如果 mediawiki 扩展本身依赖于尚未包含在基础映像中的 php 扩展或库,与添加不依赖于任何其他 php 扩展或库的 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
构建形象
docker build
将此 Dockerfile 转换为镜像:
$ 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
当此容器运行时,使用 Web 浏览器访问
localhost:8080
。系统将要求您执行设置过程。当您进入选项页面时,EmbedVideo 扩展将包含在扩展列表中。执行其余设置
LocalSettings.php
文件并将其连接到数据库。请按照官方 MediaWiki Docker 文档执行这些步骤,并将您的
username/mediawiki
图像替换为官方
mediawiki
图像。添加额外插件
RUN
末尾附加更多
my-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
大多数扩展要求您修改
LocalSettings.php
,并且像 Scribunto 一样,有些扩展需要在下载后运行额外的安装命令(检查每个扩展的
README
)。像VisualEditor 这样的复杂扩展将需要额外的容器来运行 Parsoid 等守护进程。我自己的
Dockerfile
和 docker-compose.yml
说明了如何配置其他插件。
services
...
mediawiki
...
volumes:
...
- ./extensions/extension1:/var/www/html/extensions/extension1
...
...
...
...
我就是这样做的,效果很好!