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