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

时间:2018-03-13 23:37:20

标签: docker docker-compose mediawiki mediawiki-extensions

我们正在使用官方MediaWiki Docker image,并希望能够添加其他MediaWiki扩展程序。

问题:

  1. 如果我们当前正在使用docker-compose文件,我们在下面建议的下一步是在主机上安装卷吗?是否要建立一个包装官方形象的新形象?这个修改后的新图像是否有一个示例用于添加mediawiki扩展名?
  2. 或者我们可以在当前的docker-compose中在主机上安装扩展卷,如果需要,可以对LocalSettings.php进行任何调整吗?
  3. 这个link on the docker website指的是添加PHP扩展和库,但如果想要添加MediaWiki特定的扩展,如果它试图成为相同的答案,我不清楚它,因为它确实说明了“PHP Extensions”。或者这个文档页面是否真的说过“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扩展,那么解释需要改变的内容可能是好的。 / p>

1 个答案:

答案 0 :(得分:1)

按照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

此容器正在运行时,请使用网络浏览器访问localhost:8080。系统将要求您执行设置过程。当您进入选项页面时,EmbedVideo扩展名将包含在扩展名列表中。

执行其余的设置

需要其他步骤才能使MediaWiki在docker中运行,例如提供LocalSettings.php文件并将其连接到数据库。按照official MediaWiki Docker documentation的步骤进行操作,将您的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。我自己的Dockerfiledocker-compose.yml说明了如何配置其他插件。