gpt4 book ai didi

docker - 使用 MediaWiki 官方 docker 镜像时如何最好地添加扩展?

转载 作者:行者123 更新时间:2023-12-02 03:23:26 26 4
gpt4 key购买 nike

我们使用的是官方MediaWiki Docker image并希望能够添加其他 MediaWiki 扩展。

问题:

  1. 如果我们当前正在使用下面的 docker-compose 文件,并且在主机上挂载卷,那么这里建议的下一步是什么?是为了打造一个包裹官方形象的新形象吗?是否有此修改后的新图像用于添加 mediawiki 扩展的示例?
  2. 或者我们可以在当前 docker-compose 中的主机上安装扩展卷,并根据需要对 LocalSettings.php 进行任何调整吗?

这个link on the docker website指的是添加 PHP 扩展和库,但我不清楚如果想要添加 MediaWiki 特定扩展,这是否是相同的答案,因为它明确表示“PHP 扩展”。或者这个文档页面实际上应该说“MediaWiki Extensions”,即使这意味着它们是用 PHP 编写的?

这是我们当前的 mediawiki docker-compose 文件条目:

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 扩展相比,需要更改哪些内容。

最佳答案

正如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

构建镜像

使用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 扩展将包含在扩展列表中。

执行其余设置

要让 MediaWiki 在 docker 中运行,还需要其他步骤,例如提供 LocalSettings.php 文件并将其连接到数据库。关注official MediaWiki Docker documentation对于这些步骤,请将您的username/mediawiki 图像替换为官方mediawiki 图像。

添加其他插件

可以通过在 my-mediawiki/Dockerfile 末尾附加更多 RUN 指令来安装多个插件。例如,添加 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 等守护进程。我自己的Dockerfiledocker-compose.yml说明如何配置其他插件。

关于docker - 使用 MediaWiki 官方 docker 镜像时如何最好地添加扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com