Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用MediaWiki的正式docker映像时最好地添加扩展?_Docker_Docker Compose_Mediawiki_Mediawiki Extensions - Fatal编程技术网

如何在使用MediaWiki的正式docker映像时最好地添加扩展?

如何在使用MediaWiki的正式docker映像时最好地添加扩展?,docker,docker-compose,mediawiki,mediawiki-extensions,Docker,Docker Compose,Mediawiki,Mediawiki Extensions,我们正在使用官方版本,希望能够添加额外的MediaWiki扩展 问题: 如果我们当前正在使用下面的docker compose文件,那么在主机上装载卷时,建议下一步是什么?是为了建立一个新的形象来包装官方形象吗?是否有这样一个示例,用于添加mediawiki扩展 或者我们可以在当前docker compose中的主机上挂载一个扩展卷,如果需要,对LocalSettings.php进行任何调整吗 这指的是添加PHP扩展和库,但我不清楚这是否与添加MediaWiki特定扩展的答案相同,因为它明确表示

我们正在使用官方版本,希望能够添加额外的MediaWiki扩展

问题:

  • 如果我们当前正在使用下面的docker compose文件,那么在主机上装载卷时,建议下一步是什么?是为了建立一个新的形象来包装官方形象吗?是否有这样一个示例,用于添加mediawiki扩展
  • 或者我们可以在当前docker compose中的主机上挂载一个扩展卷,如果需要,对
    LocalSettings.php
    进行任何调整吗 这指的是添加PHP扩展和库,但我不清楚这是否与添加MediaWiki特定扩展的答案相同,因为它明确表示“PHP扩展”。或者这个文档页面实际上应该说“MediaWiki扩展”,即使这意味着它们是用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映像作为其“发件人”的下游docker映像示例,包括mediawiki扩展和更新的docker compose(如果两者都需要),以便能够添加mediawiki扩展,都会有所帮助。如果mediawiki扩展本身依赖于未包含在基础映像中的php扩展或库,与添加不依赖任何其他php扩展或库的mediawiki扩展相比,解释需要更改的内容可能会更好,您需要创建一个包装官方MediaWiki图像的图像

    编写使用额外扩展名制作图像的说明 作为一个简单的示例,我们将创建一个包含扩展的图像,该扩展从1.31版起未与MediaWiki捆绑。将以下说明添加到文件
    my mediawiki/Dockerfile

    来自mediawiki的
    最新版本
    运行git克隆--深度1https://github.com/HydraWiki/mediawiki-embedvideo.git /var/www/html/extensions/embeddevideo
    
    树立形象 使用
    docker build
    将此Dockerfile转换为图像:

    $docker build-t username/mediawiki./my mediawiki
    正在将生成上下文发送到Docker守护程序2.048kB
    步骤1/2:来自mediawiki:最新
    最新版本:从library/mediawiki中提取
    802B000ED6F79:拉动完成
    #[省略行]
    8b47ece631d8:拉动完成
    摘要:sha256:5922653b254073c6d6a535bbdb0101f8a5eadbf557e2f31d590c234001c55b60
    状态:已下载mediawiki的更新图像:最新
    --->27fe73856ca7
    步骤2/2:运行git克隆--深度1https://github.com/HydraWiki/mediawiki-embedvideo.git /var/www/html/extensions/embeddevideo
    --->在30a411511341中运行
    正在克隆到“/var/www/html/extensions/embeddevideo”。。。
    拆卸中间容器30a411511341
    --->5b297228bb08
    成功构建5b297228bb08
    已成功标记用户名/mediawiki:最新
    
    测试图像 使用docker run测试图像:

    $docker run--rm-p 8080:80用户名/mediawiki
    
    此容器运行时,请使用web浏览器访问
    localhost:8080
    。将要求您执行设置程序。当您进入选项页面时,EmbeddeVideo扩展将包含在扩展列表中

    执行其余的设置 在docker中运行MediaWiki还需要其他步骤,例如提供
    LocalSettings.php
    文件并将其连接到数据库。按照以下步骤操作,将您的
    username/mediawiki
    图像替换为官方的
    mediawiki
    图像

    添加其他插件 通过在my mediawiki/Dockerfile的末尾附加更多的
    RUN
    说明,可以安装多个插件。例如,要添加,请将以下内容附加到文件底部:

    运行git clone--depth 1-b$MEDIAWIKI\u分支\
    https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Scribunto \
    /var/www/html/extensions/Scribunto\
    &&chmoda+x/var/www/html/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua*\u linux*/lua
    
    修改
    Dockerfile
    后,使用以下命令更新图像:

    docker build-t username/mediawiki./my mediawiki
    

    大多数扩展都要求您修改
    LocalSettings.php
    ,并且像Scributo一样,有些扩展需要在下载后运行额外的安装命令(请检查每个扩展的
    自述文件
    )。像这样的复杂扩展需要额外的容器来运行守护进程,比如Parsoid。我自己的,并说明了如何配置其他插件。

    看起来不错。正如您所说,对于更简单的扩展,我得到了类似的结果,但还没有完成更复杂的扩展VisualEditor。您是否参考了一个示例(设置、配置、docker compose文件等)来实现VisualEditor,以及运行Parsoid的附加容器等?我确实制作了一个使VisualEditor工作的
    docker compose.yml
    文件。我一到家就链接到它,作为一个例子,不过这要到11月18日才可以:(.我上传了并按照@Streamline的要求链接到了。